Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于C语言中的指针_C - Fatal编程技术网

关于C语言中的指针

关于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”是做什么的

这是否意味着将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;
    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;