程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-C語言字符串數組定義問題

c語言-C語言字符串數組定義問題

編輯:編程綜合問答
C語言字符串數組定義問題

#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));然後就可以復制了,
同理,你需要給你的這個第一行代碼的指針也讓他指向一個地址,你可以采用動態堆地址或者棧空間,這個就隨你了

不謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved