c中有多个字符但不是指针的字符

时间:2013-11-01 16:38:06

标签: c string char

我刚刚在c:

中遇到了这段代码
char buf[1024];

这是什么意思?我的印象是char *buf[1024]是制作char字符串的唯一方法。

4 个答案:

答案 0 :(得分:3)

声明

char *buf[1024];

使buf指向char的指针数组。换句话说,它可以用作1024个字符串的数组。

声明

char buf[1024];

声明单个字符数组,最多可包含1024个字符(或包含1023个字符的字符串加上终结符)。

答案 1 :(得分:1)

char buf[1024];声明一个长度为1024的char类型的数组。char *buf[1024]将声明一个包含1024个char *类型元素的数组,可用于指向1024字符串。这两个数组都将在堆栈中声明。

C字符串只是char的以空字符结尾的数组。因此char buf[1024];可以包含一个字符串,其中包含1023个字符,末尾带有空字符。如果你想要一个指向可能包含字符串的char数组的指针,char *buf[1024]是错误的声明方式。你需要在堆上malloc空间:

char* pBuf = (char*) malloc(1024);

答案 2 :(得分:1)

char buf[1024]; 

是一个字符数组,这意味着您只能在一个变量中存储多个字符。在这种情况下,您的阵列最多可以存储1024个字符。

答案 3 :(得分:1)

有两种方法可以在C中创建字符串,您可以使用char buf[1024]静态分配字符串,这意味着您在编译时声明大小为1024的字符串;或动态使用char *buf,这意味着您正在声明一个指向char的指针(也可以看作是指向字符串的指针),然后可以使用所需大小的malloc来分配。

正如其他答案中所提到的,char *buf[1024]声明了一个不是字符串的char指针数组。