在这个程序中我有char变量a
, b
是指向b
的指针, c
是指向b
的指针。 而*a=b
, *c
不等于b
。 我不明白为什么,谁能解释一下?
另一件事我不明白我如果将变量从char
更改为int
,则取消引用c
b
值。 *c
等于b
。但如果变量是char
类型,则不是。
#include #include int main() { char a = "a" ; char *b; b = &a; printf("%dn", b); printf("%dnn", &a); printf("Deference b* hold value: %dn", *b); printf("a hold value: %dnn", a); char *c; c = &b; printf("%dn", c); printf("%dnn", &b); printf("Deference *c hold value: %dn", *c); printf("b hold value: %dnn", b);// why *c not equal b return 0; }
首先,
char a = "a" ;
是非法的,你实际上是在尝试将指针存储到char
。 你需要的是什么
char a = 'a' ;
然后,说
printf("%dn", b); printf("%dnn", &a); //and all later pointer related prints....
因为您将错误类型的参数传递给%d
会导致未定义的行为 。 要打印指针,您需要
之后,
char *c; c = &b;
也是错误的,请参阅数据类型。 &b
是指向char
指针。 这与char *
不一样,正如你所做的那样 。 你需要c
为char **
类型。
看看编译器警告,也许你想要这个:
int main() { char *a = "a"; char *b; b = a; printf("%pn", b); printf("%pnn", &a); printf("Deference b* hold value: %dn", *b); printf("a hold value: %pnn", a); char *c; c = b; printf("%pn", c); printf("%pnn", &b); printf("Deference *c hold value: %dn", *c); printf("b hold value: %pnn", b);// why *c not equal b return 0; }
以上就是c/c++开发分享C程序,为什么取消引用指针的char指针并没有得到预期的值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522032.html