아는 바에 따르면 % d은 int 값을 필요로합니다. 나는 왜 gcc 컴파일러가 int *를 기대한다고 말하는지 이해하지 못한다.% d inting * in c
여기 내 코드입니다 :
#include<stdio.h>
#include<stdlib.h>
struct student
{
int rn, m[5];
char nm[25];
};
int main()
{
struct student* s[5];
struct student **q=s;
int i = 0;
printf("Enter data");
for(i=0;i<5;i++)
{
printf("\nStudent %d:\n",i+1);
printf("Roll number: ");
scanf("%d",(s[i])->rn);
printf("\n%d",s[i]->rn);
}
}
그리고 여기 경고입니다 :
warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",(s[i])->rn);
'scanf'는 포인터를 기대하므로 실제로 int의 값을 변경할 수 있습니다. – tkausl
또한's [i]'는 초기화되지 않았습니다. – BLUEPIXY