2013-11-01 25 views

回答

3

声明

char *buf[1024]; 

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

声明

char buf[1024]; 

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

1

char buf[1024];声明char类型的长度为1024 char *buf[1024]阵列将声明一个数组与char *类型的1024种元素,其可用于以指向1024名的字符串。这两个数组都会在堆栈中声明。

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

char* pBuf = (char*) malloc(1024); 
1
char buf[1024]; 

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

1

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

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