如何解决为什么我不能编译这段代码并且我得到了 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 举报,一经查实,本站将立刻删除。