为什么我不能编译这个代码,并且在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 %dn", ptr1, *ptr1);
print ("var1 tem o mesmo %p e ovalor %dn", 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 %dn", (void*)ptr1, *ptr1);
printf ("var1 tem o mesmo %p e ovalor %dn", (void*)ptr2, *ptr2);
}

最新更新