0

我刚刚在c中遇到了这段代码:

char buf[1024];

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

4

4 回答 4

3

宣言

char *buf[1024];

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

宣言

char buf[1024];

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

于 2013-11-01T16:42:09.277 回答
1

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);
于 2013-11-01T16:42:25.730 回答
1
char buf[1024]; 

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

于 2013-11-01T16:43:15.307 回答
1

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

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

于 2013-11-01T16:52:22.763 回答