廣東高端建設(shè)網(wǎng)站金戈枸櫞酸西地那非片
char* a[] 和 char a[] 的區(qū)別
char* a[] 和 char a[] 是 C 語言中數(shù)組的不同聲明方式,二者具有以下區(qū)別:
char a[] 聲明的是一個(gè)字符數(shù)組,其中存儲(chǔ)的是一串字符。此時(shí),a 可以被視為一個(gè)指向字符的指針。
char* a[]則聲明了一個(gè)指針數(shù)組,即一個(gè)由指向字符的指針組成的數(shù)組。
下面來分別討論它們的用法:
char a[]
假設(shè)現(xiàn)在需要定義一個(gè)字符串變量,并對(duì)其賦值:
char myString[] = "Hello World";
可以看到,在使用 char a[] 時(shí),可以在定義該數(shù)組時(shí)直接給其賦初始值(初始化),同時(shí)數(shù)組的長(zhǎng)度會(huì)根據(jù)初始值自動(dòng)計(jì)算,因此可以省略數(shù)組長(zhǎng)度的定義(如 char myString[12])。使用時(shí),可以直接使用數(shù)組名 myString 或通過指針間接使用。
也就是說,在這里面 myString[0] = 'H'
char* a[]
現(xiàn)在需要定義一個(gè)由多個(gè)字符數(shù)組組成的指針數(shù)組,可以這樣定義:
char* allStrings[] = {"string1", "string2", "string3"};
此時(shí),allStrings 就是一個(gè)指向字符指針的數(shù)組。在使用 char* a[] 時(shí),需要在定義數(shù)組時(shí)賦初始值,即字符串指針。其中,每個(gè)元素都是指向相應(yīng)字符串的指針。例如上述代碼,allStrings 數(shù)組包含有三個(gè)元素,每個(gè)元素都是一個(gè)字符串的地址。allStrings[0] == "string1"
當(dāng)需要訪問字符串內(nèi)容時(shí),可以使用類似于 *(allStrings + 1) 的方法,直接定位到字符串指針的位置,然后再輸出字符串內(nèi)容。
總之,雖然 char a[] 和 char* a[] 都涉及到指針和數(shù)組,但前者主要用于定義和操作字符數(shù)組,而后者則用于構(gòu)建由字符串指針構(gòu)成的數(shù)組。
總結(jié)
char *a[] 就是一個(gè)字符串?dāng)?shù)組,char a[] 就是一個(gè)字符數(shù)組