问题描述
我对编码很陌生,有人可以帮忙吗,谢谢!
#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);
}