【发布时间】:2021-06-27 06:39:09
【问题描述】:
'''
bool loadArray(unsigned int array[8][8]) { int* p = array; ... }
'''
我有一个使用用户输入加载数组[8][8] 的函数。一切正常,但尝试使用 gcc (c99) 编译它会给我一个警告(指向 'int* p = array;'),上面写着:'从不兼容的指针类型初始化 [默认启用]'。
我在代码中到底做错了什么?
【问题讨论】:
-
作为参数,
unsigned int array[8][8]的定义实际上与unsigned int (*array)[8]相同。并且int (*)[8]类型与int *类型(p的类型)不兼容。正如编译器告诉你的那样。你真正想做什么?p的目的是什么? -
@Someprogrammerdude 我想创建一个指向数组开头的指针,以便我可以填充它。
-
为什么不能使用
array[i][j]?为什么需要指针?你如何“填充”“数组”?请尝试创建minimal reproducible example 向我们展示。 -
对于未来的问题,请使用 SO tour、阅读 How to Ask 以及 this question checklist。并了解如何edit您的问题。
-
@Someprogrammerdude 我可以这样做,但我认为“更时尚”的解决方案是将二维数组转换为一维数组并将其填充到一个 for 循环中'for (int i = 0; i
标签: arrays c pointers gcc warnings