我正在玩数组和指针,并得到了这个分段错误。任何人都可以解释为什么我在代码中将指针“p”移动到代码中的“ptr”指针下方并且当我注释掉其中一个 printf 语句时,它会消失:
typedef struct str{
char* ptr;
}str_t;
copy(str_t t){
char a[12];
char *p; // <------ no error when move below ptr pointer
char *ptr;
printf("t= %s p = %d ptr = %d\n", t, p, ptr);
strcpy(a, t.ptr);
printf("a = %s %u\n", a, &a);
strcpy(ptr, t.ptr);
printf("ptr = %s %u\n", ptr, &ptr); //<--- comment it error disappears
p= t.ptr;
printf("p = %s %u",p, &p); //<--- comment it error disappears
}
int main ()
{
str_t t;
char app[] = "hello";
char ap[] ="world";
t.ptr = ap;
copy(t);
printf("%s\n", app);
return 0;
}
您可以在此处编译代码以查看结果: http ://codepad.org/Q7zS8NaC
感谢您访问此问题。