关于C语言中的指针
这是一个用于打印地址和字符串的代码。但是,我不明白“p.str”是做什么的 这是否意味着将p(数据结构中的指针)转换为字符串?关于C语言中的指针,c,C,这是一个用于打印地址和字符串的代码。但是,我不明白“p.str”是做什么的 这是否意味着将p(数据结构中的指针)转换为字符串? 另外,“p.str=mystring”是否意味着p是指向mystr的?p不是指针,而是一个struct Data变量p.str是此结构的成员,它是一个char*指针 struct Data{ char * str; }; int main(){ struct Data p; char mystr[6]; p.str = mystr;
另外,“p.str=mystring”是否意味着p是指向mystr的?
p
不是指针,而是一个struct Data
变量p.str
是此结构的成员,它是一个char*
指针
struct Data{
char * str;
};
int main(){
struct Data p;
char mystr[6];
p.str = mystr;
char s[] = "cs120";
char * j = p.str;
for(char * i = s; *i != '\0'; i++){
*j = *i;
j++;
}
*j = '\0';
printf("%p: %s", j+1, p.str);
return 0;
}
将
mystr
数组的地址复制到此指针中(数组变量在该上下文中衰减为指向其第一个元素的指针)。这是有效的,但我想知道为什么程序会在mystr
数组结束后打印地址。编写代码时不要使用“智能引号”。C只允许ASCII引号。“p.str=mystring”意味着p被寻址到mystr?
否。p
是struct Data
的一个实例,它有自己的地址-与mystring
的地址无关。现在。。。赋值后p.str=mystr
,由p.str持有(指向)的地址是mystr
的地址。谢谢。那么.str
是结构中的指针吗?因为我不明白.str
是从哪里来的。是的,这就是访问结构成员的方式。如果你不理解,你应该复习课本或教程中关于结构的部分。
p.str = mystr;