[英]C pointers and array declaration
字符串文字(如"Alan"
)的類型為char[5]
,並指向字符串的開頭,使用char *
。 "Alan"
本身由以下部分組成:
{ 'A', 'L', 'A', 'N', '\0' }
你可以看到它由多個char
。 這個char *
指向字符串的開頭,字母'A'
。
由於您需要這些字符串的數組 ,然后將[]
添加到您的聲明中,因此它變為: char *names[]
。
使用字符串文字時,首選const指針。
const char *names[] = {
"Alan", "Frank",
"Mary", "John", "Lisa"
};
在聲明中, name
是一個const char
指針數組,這意味着它對cstrings保存了5個char*
。 當你想使用指針時,你使用指針就這么簡單。
例:
const char *c = "Hello world";
因此,當您在數組中使用它們時,您將創建5個指向字符串文字的const char*
指針。
因為數組的內容是char*
。 另一個例子有一個int
。 “Alan”是一個字符串,在C語言中,您將字符串聲明為char pointers
。
在char *names[]
的情況下,您聲明了一個字符串指針數組。
C中的字符串,例如"Alan"
是內存中的一系列字符,以標記字符串結尾的\\ 0值結束
所以聲明你正在這樣做
names[0] -> "Alan\0"
names[1] -> "Frank\0"
...
然后你可以使用names [n]作為指向字符串的指針
printf( "%s:%d", names[0], strlen(names[0]) );
輸出"Alan:4"
不需要使用“指針數組”。
以下內容也適用。 它是一個20字節字符數組的數組。 編譯器只需要知道數組中事物的大小,而不是數組的長度。 你最終得到的是一個包含5個20個字節元素的數組,每個元素都有一個名稱。
#include <stdio.h>
char names[][20] = {
"Alan", "Frank",
"Mary", "John", "Lisa"
};
int main(int argc, char *argv[])
{
int idx;
for (idx = 0; idx < 5; idx++) {
printf("'%s'\n", names[idx]);
}
}
在您的示例中,數組中的事物的大小是“指向char的指針”。 字符串常量可用於初始化“指向char的指針”或“char數組”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.