微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能编译这段代码并且我得到了 Segmentation fault: 11 in C 代码

如何解决为什么我不能编译这段代码并且我得到了 Segmentation fault: 11 in C 代码

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

#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);

}

解决方法

线

    *ptr2= "b";

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

应该是

    ptr2 = "b";

设置 ptr2 本身的值而不是 ptr2 所指向的值。

此外,您应该将通过 %p 打印的指针强制转换为 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);

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。