我刚刚在c中遇到了这段代码:
char buf[1024];
这是什么意思?我的印象char *buf[1024]
是制作char
一个字符串的唯一方法。
宣言
char *buf[1024];
创建buf
一个指向 的指针数组char
。换句话说,它可以用作 1024 个字符串的数组。
宣言
char buf[1024];
声明一个字符数组,最多可包含 1024 个字符(或包含 1023 个字符加上终止符的字符串)。
char buf[1024];
声明一个char
长度为 1024的类型char *buf[1024]
数组。将声明一个包含 1024 个类型元素的数组,char *
可用于指向 1024 个字符串。这两个数组都将在堆栈上声明。
AC 字符串只是一个以 null 结尾的数组char
。所以char buf[1024];
可以包含一个包含 1023 个字符的字符串,最后是一个空字符。如果您想要一个指向char
可能包含字符串的数组的指针,char *buf[1024]
那么声明它的方法是错误的。您需要malloc
在堆上为其留出空间:
char* pBuf = (char*) malloc(1024);
char buf[1024];
是一个字符数组,这意味着您可以将多个字符存储在一个变量中。在这种情况下,您的数组最多可以存储 1024 个字符。
在 C 中创建字符串有两种方法,可以使用 静态分配字符串char buf[1024]
,这意味着您在编译时声明了一个大小为 1024 的字符串;或动态使用char *buf
,这意味着您正在声明一个指向 char 的指针(也可以看作是指向字符串的指针),然后可以使用malloc
所需的大小分配该指针。
如其他答案中所述,char *buf[1024]
声明一个 char 指针数组而不是字符串。