//code 1----------------------------------------------// fail
char str1[] = "This is a string";
char *p = str1;
char **pp;
int main()
{
*pp = p; //fail // pp = &p; //success
printf("str1 = %s\n" , str1);
printf("p = %s\n" , p);
return 0;
}
//code 2----------------------------------------------// success
char str1[] = "This is a string";
int main()
{
char *p = str1;
char **pp;
*pp = p;
printf("str1 = %s\n" , str1);
printf("p = %s\n" , p);
printf("*pp = %s\n", *pp);
return 0;
}
雖然第二個程式不會當機
但是兩個程式都有瑕疵
在於*pp = p;
pp初始時沒有給予數值, 所以存的是一個亂數, 此亂數代表某個位址
所以這個指令*pp = p
表示將p存的(位址)資料存到pp指向的(亂數)位址
該衰毛的位址資料就會被覆寫造成錯誤
沒有留言:
張貼留言