我刚刚在c:
中遇到了这段代码char buf[1024];
这是什么意思?我的印象是char *buf[1024]
是制作char
字符串的唯一方法。
答案 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指针数组。