我想显示"字符串指针受影响"但是我收到了一个错误。这是我的代码:
#include<stdio.h>
main()
{
char* *p;
char * s="string pointer affected";
*p=s;
printf("%s",*p);
}
答案 0 :(得分:6)
p
并未指向任何已知位置,因此写入*p
是一个坏主意。
你的意思是说:
p = &s;
答案 1 :(得分:5)
您取消引用未初始化的指针,将导致未定义的行为。这是问题 -
*p=s;
答案 2 :(得分:4)
您在下面的行和printf
语句中使用了未初始化的变量。如果你替换
*p = s;
与
p = &s;
然后它会起作用。
答案 3 :(得分:0)
尝试:
#include<stdio.h>
main()
{
char *p; // <--------------------------
char *s="string pointer affected";
printf("===== s=%p\n", s);
p=s;
printf("===== p=%p\n", p);
printf("%s\n", p);
}
原始代码的问题是p
未初始化。所以你不能取消引用它。
如果你想使用指向指针的指针,首先分配指针,然后取其地址。
#include<stdio.h>
main()
{
char *q;
char **p = &q;
char *s="string pointer affected";
*p=s;
printf("%s\n", *p);
}