我正在处理一个关于多维char
数组的问题。在一段时间后,我很难记住所有的。尝试找出我做错了什么。平台是Ubuntu 21.10,编译器是gcc,代码如下。任何帮助我将不胜感激。
#include <stdio.h>
int main() {
char *a1 = "hello1";
char *a2 = "hello2";
char b[][2] = { a1, a2 };
printf("%s\n", b[1]);
getchar();
return (0);
}
5条答案
按热度按时间rryofs0p1#
因为
a1
和a2
是 * 指针 *,所以需要一个指针数组来包含它们:所以你需要的并不是数组的数组,而只是一个标准的一维数组。
还要注意我添加了
const
修饰符,使其成为指向常量字符的指针数组,这是因为不允许修改文本字符串,所以所有指向它们的指针都应该是常量。如果你真的想要一个数组的数组,比如说你可以修改字符串,你首先需要确保维数是正确的,你有两个字符串,所以你需要一个两个元素的数组,然后你需要第二个“维数”足够大,以容纳字符串和你可能需要做的所有可能的加法。
例如:
但是要注意,你不能用指针初始化这些数组,甚至不能用其他数组,而是必须显式地将字符串复制到数组中:
hmae6n7t2#
指针数组不是二维数组。
此函数定义并初始化2D
char
数组:qzlgjiam3#
更正为
更正代码
sg2wtvxw4#
也是一种方式:
vfh0ocws5#
又是我
多谢协助