我对编码很陌生,有人能帮忙吗,谢谢!
#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);
}