java创建字符串数组_如何在C中创建字符串数组?

有几种方法可以在C中创建字符串数组。如果所有字符串都要具有相同的长度(或至少具有相同的最大长度),只需声明一个二维char数组并根据需要分配:char strs[NUMBER_OF_STRINGS][STRING_LENGTH+1];...strcpy(strs[0], aString);

// where aString is either an array or pointer to charstrcpy(strs[1], "foo");

还可以添加初始化程序列表:char strs[NUMBER_OF_STRINGS][STRING_LENGTH+1] = {"foo", "bar", "bletch", ...};

这假设初始化器中字符串的大小和数量与数组维度匹配。在这种情况下,每个字符串文本的内容(它本身是一个以零结尾的char数组)被复制到分配给STR的内存中。这种方法的问题在于内部碎片的可能性;如果您有99个字符串,不超过5个字符,但是有一个字符串,长度为20个字符,那么99个字符串将至少有15个未使用的字符;这是对空间的浪费。

您可以存储指向char的指针的一维数组,而不是使用char的二维数组:char *strs[NUMBER_OF_STRINGS];

请注意,在本例中,您只分配了内存来保存指向字符串的指针;字符串本身的内存必须在其他地方分配(或者作为静态数组,或者使用malloc()或calloc()。可以使用初始化程序列表,如前面的示例所示:char *strs[NUMBER_OF_STRINGS] = {"foo", "bar", "bletch", ...};

不是复制字符串常量的内容,而是简单地存储指向它们的指针。请注意,字符串常量可能不可写;您可以重新分配指针,如下所示:strs[i] = "bar";strs[i] = "foo";

但是您可能无法更改字符串的内容;即,strs[i] = "bar";strcpy(strs[i], "foo");

可能是不允许的。

可以使用malloc()为每个字符串动态分配缓冲区,并将其复制到该缓冲区:strs[i] = malloc(strlen("foo") + 1);strcpy(strs[i], "foo");

顺便说一下,char (*a[2])[14];

声明为指向char的14元素数组的指针的2元素数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值