![]() |
1
3
这是:
只是数组初始值设定项。它本身并不创建数组。第一个例子是,当您为指针分配一个字符串文字时,确实在静态存储中创建了这些字符串(对您来说是隐藏的),然后将指针分配给它们。 所以基本上,没有办法用数组初始值设定项初始化char*。您需要创建一个实际数组,并将这些数字分配给它。你必须做如下的事情:
但这是违法的。 您需要单独构建数组,并像上一个示例一样将它们分配到数组中。 |
![]() |
2
3
尝试:
这些不是char*的,也不是char*的。你可能想要:
|
![]() |
3
3
好吧,这个线程已经有点旧了,但是我正在处理相同的问题,并找到了一种初始化指向数组的指针数组的方法,如下所示:
我得到输出,用gnu g编译++
并使用Intel ICPC进行编译
因此,语法在原则上似乎是正确的,只是英特尔编译器不支持它,可能是因为缺乏这种风格的常见用法。 ---编辑--- 这里还有一个C版本(根据需要):
我用gcc和clang测试了它,它打印了正确的结果。 顺便说一句,英特尔编译器的错误输出是一个编译器错误。 |
![]() |
4
1
|
![]() |
5
0
第二个示例的语法是多维数组文字的语法。 多维数组不是指向数组的指针数组。 如果一个事物的语法也是另一个事物的语法,这将是令人惊讶的,这取决于它被声明为的类型。 在第一个示例中,由于字符串文字的计算结果是指针而不是数组值,因此该值的计算结果是指针数组。因为数组文字是作为数组值而不是指针来计算的,所以第二个例子是多维数组——元素是数组值的数组,而不是元素是指向数组值的数组。 下面的代码演示多维数组、指向数组的指针、指针数组和指向指针的指针的组合。在这三个数组中,只有指针数组和指向指针的指针数组彼此兼容:
|
![]() |
6
0
请注意,您的第一个示例也不起作用。它需要:
注意 康斯特 . 编辑:我所说的“不起作用”,是指不好的实践和容易出错,这是可以说更糟的。 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |
![]() |
Geremia · 2D NumPy数组+1D数组? 5 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 6 月前 |
![]() |
Paul Williams · 迭代数组时输出有问题 6 月前 |