c/c++语言开发共享无法为变量和指针赋值


可能重复:
尝试在C中打印值时出现分段错误

我对C很新,但不知道为什么这个程序会破坏。 如果我删除与i有关的行,程序将编译并运行,但是如果我分配i ,我将无法在没有程序中断的情况下为*ptr分配任何内容。

 int main(void) { int i; int *ptr; i = 2; *ptr = 5; printf("%d",*ptr); } 

    您将指针保留为未初始化的值。 因此,当您取消引用它( *ptr )时,您将访问内存中的任意位置,从而导致分段错误。

    通过为ptr本身(不是*ptr )分配变量的地址(如&i )或一些新分配的内存(如malloc(sizeof(int)) )来指向ptr

    以下是C的答案:

     int main(void) { int i; int * ptr = (int *)malloc(sizeof(int)); i = 2; *ptr = 5; printfn("%d",*ptr); free(ptr); } 

    或者你可以为i和* ptr赋值行使用类似的东西:

     int main(void) { int i; int * ptr; i = 2; ptr = &i; printfn("%d",*ptr); // should print 2 } 

    另请注意,免费出来!!!

    你宣布ptr但没有指出任何事情。 然后你试着写下它指向的内容。 这绝不是一个好主意。 尝试通过添加行来使ptr指向i

     ptr = &i; 

    在你尝试写入* ptr之前

    在C中使用指针之前,您需要将指针设置为现有的内存块,您需要为它分配内存,就像这样。

    需要了解更多c/c++开发分享无法为变量和指针赋值,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

     int *ptr = (int *)malloc(sizeof(int)); 

      以上就是c/c++开发分享无法为变量和指针赋值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980212.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐