c - 如何在结构中使用指针?
问题描述
我在打印结构元素时使用了指针,但它在打印语句中没有使用指针,但我们不应该使用指针从变量地址中收集元素,为什么它在结构情况下不同,在字符串中也不同。谁能告诉我这是为什么?
#include <stdio.h>
int main(){
struct books{
char name[10];
int page;
};
struct books b1={"book1",1};
struct books *ptr;
ptr=&b1;
printf("%s %d",ptr->name,ptr->page);
}
解决方案
printf("%s %d",*ptr->name,*ptr->page);
是错的。A->B
意味着(*A).B
。你应该做
printf("%s %d",ptr->name,ptr->page);
或者
printf("%s %d",(*ptr).name,(*ptr).page);