c/c++语言开发共享C程序,为什么取消引用指针的char指针并没有得到预期的值

在这个程序中我有char变量ab是指向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 *不一样,正如你所做的那样 。 你需要cchar **类型。

    看看编译器警告,也许你想要这个:

     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

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐