#include
int main()
{
char *ptr[10]; 為什麼這樣運行時會出錯?
gets(ptr[0]);
}
#include
int main()
{
char ptr[10][20]; 而這樣運行時則沒有問題?
gets(ptr[0]);
}
char *p[10] 與 char p[10][20] 之間有什麼不同? 還是說在這裡是gets()函數用錯了?
萬分感謝!
哥們,你的第一個定義的是數組指針,第二定義的是一個二維數組,第一種定義並沒有未這個指針變量開辟他所指向的空間的地址,所以賦值會有錯誤。舉個例子,你這樣寫就如同:
1。 int *p ; 和 int a[10]; 你給*p=1,和你給a[0]=1;
是一個道理的,只不過你這裡把我上面寫的一維的改成了二維的。在每個後面又加了一個[10];
說道這裡你應該就明白了,如果你想給*P賦值應該怎麼辦?可以讓他先指向一個地址,比如你讓*p=malloc(sizeof(int));然後就可以復制了,
同理,你需要給你的這個第一行代碼的指針也讓他指向一個地址,你可以采用動態堆地址或者棧空間,這個就隨你了
不謝!