初始化指向字符串的指针

时间:2011-08-06 15:39:20

标签: c linux string

我有一个非常基本的疑问。假设我声明了一个指向字符串的指针。

char *data;

并按如下方式分配内存

data = malloc(13*sizeof(char));

我的问题是如何初始化字符串。 是

data = NULL;

正确的事情。

谢谢

6 个答案:

答案 0 :(得分:2)

如果要将字符串初始化为空字符串,则

*data = '\0';

是正确的做法。你所做的是让你的变量指向NULL,而不是你分配的13个字节的内存。

答案 1 :(得分:2)

如果您只想要一个空字符串,data[0] = '\0'就可以了。像示例所示设置data = NULL只会泄漏内存分配。

答案 2 :(得分:1)

您必须设置 memset

答案 3 :(得分:1)

如果通过初始化你的意思是全部为零,那么:

memset(data, 0, 13);

会这样做。

或者,正如 @Griffin 所说,使用calloc代替malloc来同时分配和初始化该区域。

答案 4 :(得分:0)

查看free功能。

答案 5 :(得分:0)

不,考虑memset / memcpy或strncpy函数。 随着

memset(void *b, int c, size_t len);

你可以初始化内存区域,用memcpy或strncp可以将数据复制到内存区域。如果你处理字符串,你应该使用strncpy。

玩得开心