Har 2dimensionell array som jag tänkte skriva på skärmen När kompilatorn klagar är det bra om du skriver vad den säger. lite skrivfel där med include, Nu insåg jag vad kompilatorn klagar på...c program - 2dimensionell array utskrift
på detta sätt som koden nedan visar, men gör något fel,
kompilatorn klagar, men vad är det som är felet ?
#include<studio.h>
#include<stdlib.h>
#include FEM 5
#include TOLV 12
int main(void)
{
int tal[FEM][TOLV] = {
{98, 45, 62, 78, 23, 64, 98, 36, 25, 65, 75, 65},
{12, 35, 5, 6, 45, 98 ,75, 32, 16, 85, 32, 21},
{3, 26, 37, 96, 23, 45, 75, 28, 32, 18, 67, 82},
{54, 4, 15, 26, 45, 75, 98, 72, 36, 88, 2, 16},
{105, 65, 75, 79, 32, 27, 5, 100, 64, 30, 80, 42}
};
int a, t;
int *p_num;
system("cls");
p_num = &tal[0][0];
for(a = 0; a < 5; a++)
for(t = 0; t < 12; t++)
printf("tal [%d][%d] = %d\n", a + 1, t + 1, *(*(p_num + a) + t));
printf("\n");
system("PAUSE");
return 0;
}Sv: c program - 2dimensionell array utskrift
Kan det vara att du har skrivit <b>#include <studio.h></b> i stället för <b>#include <stdio.h></b>?
Och varför skriver du
p_num = &tal[0][0];
for(a = 0; a < 5; a++)
for(t = 0; t < 12; t++)
printf("tal [%d][%d] = %d\n", a + 1, t + 1, *(*(p_num + a) + t));
i stället för det mycket enklare och tydligare
for(a = 0; a < 5; a++)
for(t = 0; t < 12; t++)
printf("tal [%d][%d] = %d\n", a + 1, t + 1, tal[a][t]);
?
Sv: c program - 2dimensionell array utskrift
varför jag skriver så är för att prova om jag har förstått hur en pekare fungerar i det har fallet bara, om jag har en 2 dimensionell array och skriver ut det med *p_num, men det har jag tydligen inte gjort.Sv: c program - 2dimensionell array utskrift
Du har deklarerat p_num som en pekare till heltal, men använder den som en pekare till en pekare till ett heltal. Du skall alltså använda deklarationen
int **p_num;
Så som du har nu är alltså p_num en pekare till ett heltal, och då blir även p_num+a pekare till ett heltal. Uttrycket *(p_num+a) blir ett heltal och så även *(p_num+a)+t. Men sedan försöker du använda *(*(p_num+a)+t), dvs du försöker ta det som ett heltal pekar på. Men ett heltal är ingen pekare, så kompilatorn klagar.