gpt4 book ai didi

c - C中动态分配的二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:12 25 4
gpt4 key购买 nike

我需要清楚地了解如何为字符创建二维数组。这个我知道

char *str="hellowww";//here its a constant string

str 可以指向“hellowwww”字符串,无需任何内存分配。所以

char *str[5]

应该能够对每个元素执行相同的操作。所以如果是这样的话,

1) char *str[5] 是二维字符数组吗?

2) 在这种情况下我们什么时候需要使用 malloc 和 free?

3) 我知道我可以像在二维整数数组中那样为 malloc 创建一个循环,但是有什么意义吗?

#include <stdio.h>
#include <string.h>

int main(void)
{
char *arr[6];
int i, j;


arr[0] = "hurr1";
arr[1] = "hurr2";
arr[2] = "hurr3";
arr[3] = "hurr4";
arr[4] = "hurr5";
arr[5] = "hurr6";

for(i = 0; i < 6; i++)
{
for(j = 0; j<strlen(arr[i])+1;j++)
printf("%c", arr[i][j]);
printf("\n");
}

}

以上程序无需任何 malloc 或 free 即可运行,我可以访问每个字符。

最佳答案

char *str;

为指针分配足够的字节,它期望在稍后的某个时间用字符的地址填充(可能是序列的第一个,并且可能通过动态分配内存)。

char *str = "hello";

分配指针,并为字符串“hello”及其终止的 0 字节分配一个 6 字节缓冲区(可能在只读内存中),并使指针指向它。

我不知道你的意思是“没有任何内存分配”。

char *str[5];

为五个连续的指针分配一个内存块,它希望在稍后的某个时间填充这些指针。这是二维数组吗?不,虽然如果您碰巧为每个指针分配了一个字符序列的地址,str[x][y] 将访问 y 的字符 第 x 个字符串,使其看起来像一个二维数组。

关于c - C中动态分配的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com