#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct BOOK{
char name[15];
char author[33];
int year;
};
struct BOOK *books;
int main(){
int i,noBooks;
noBooks=2;
books=malloc(sizeof(struct BOOK)*noBooks);
books[0].year=1986;
strcpy(books[0].name,"MartinEden");
strcpy(books[0].author,"JackLondon");
//asking user to give values
scanf("%d",&books[1].year);
scanf("%s",&books[1].name);
scanf("%s",books[1].author);
printf("%d %s %s\n",books[0].year,books[0].author,books[0].name);
printf("%d %s %s\n",books[1].year,books[1].author,books[1].name);
getch();
return 0;
}
我給1988 theidiot
和dostoyevski
&運算符在結構中沒有做任何事情?
輸出
1986 JackLondon MartinEden
1988 dostoyevski theidiot
在
scanf
,在books[].name
我用&
,在books[].author
我沒有使用,但它仍然沒有相同的。對於year
它沒有工作。 &
在結構中是無用的嗎?
我的意思是
scanf("%d",&books[1].year);
scanf("%s",&books[1].name);
scanf("%s",books[1].author); //no & operator
char name[15];
char author[33];
在這裏,我可以使用
char *name[15];
char *author[33];
沒什麼變化。爲什麼我不能看到差異?
你究竟在做什麼? –
我想了解爲什麼&和*運營商不改變任何東西。 – user3122948
'&books [1] .name'和'books [1] .name'產生相同的地址(這就是爲什麼它可以使用和不使用&的原因),儘管結果類型稍有不同。 – Cornstalks