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