首页 > 解决方案 > 为什么我不能编译这段代码并且我得到分段错误:C 代码中的 11

问题描述

我对编码很陌生,有人可以帮忙吗,谢谢!

#include <stdio.h>

int main()
{
    int var1 = 5;
    char var2 = 'a';
    int *ptrl = &var1;
    char *ptr2;
    *ptr2= "b";
    print ("var1 tem o mesmo %p e ovalor %d\n", ptr1, *ptr1);
    print ("var1 tem o mesmo %p e ovalor %d\n", ptr2, *ptr2);

}

标签: csegmentation-fault

解决方案


线

    *ptr2= "b";

调用未定义的行为,因为它使用 的(不确定的)值ptr2,这是未初始化的非静态局部变量。

它应该是

    ptr2 = "b";

设置ptr2自身的值而不是 指向的值ptr2

此外,您应该将指针转换为通过%pto打印,void*因为规范要求void*.

还有一点是你应该使用const char*指针来分配字符串文字,因为修改字符串文字是被禁止的。

#include <stdio.h>

int main()
{
    int var1 = 5;
    char var2 = 'a';
    int *ptr1 = &var1;
    const char *ptr2;
    ptr2= "b";
    printf ("var1 tem o mesmo %p e ovalor %d\n", (void*)ptr1, *ptr1);
    printf ("var1 tem o mesmo %p e ovalor %d\n", (void*)ptr2, *ptr2);

}

推荐阅读