指针数组的初始化!
const char *strings[7] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
這是聲明時初始化的清況,如果先聲明,在初始化呢?
我想當然的寫成:
const char *strings[7]; strings = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};keil提示:test.c(65): error: #29: expected an expression
我不知道問題出在哪兒,基礎不牢啊。所以在研究一下指針數組的初始化。
上面 const char *strings[7] 聲明了一個指針數組,它的每個元素是指向const char 的指針(還是指向char 的const指針?)。 ?
知道錯誤原因了,看了《c和指針》,數組名是一個指針常量,也就是第一個元素的地址,它的類型取決于數組數據元素的類型。 我這樣賦值相當于修改指針常量,所以報錯。如果想對指針數組賦值,需要用一個for或while循環。
總結
- 上一篇: 如何在C中为一个数组分配空间?
- 下一篇: 使用malloc之前需要做什么准备工作。