超凡天赐 发表于 2017-2-6 16:22:07

我的编译器会警告,警告类型不同,这是为什么?

本帖最后由 超凡天赐 于 2017-2-20 21:00 编辑

@人造人 S1E29:参数和指针 | 课后测试题及答案
http://bbs.fishc.com/thread-77360-1-1.html
(出处: 鱼C论坛)
#include <stdio.h>

void func(int (*b));

void func(int (*b))
{
    printf("%d\n", b);
}

int main(void)
{
    int a = {
      {1, 2, 3, 4},
      {5, 6, 7, 8},
      {9, 10, 11, 12}
    };
   
    func(a);
   
    return 0;
}
这样写就没有任何警告和报错

人造人 发表于 2017-2-6 16:45:34

这只是警告,不影响程序执行
小甲鱼老师是想让你理解二维数组的存储方式

超凡天赐 发表于 2017-2-6 16:58:36

人造人 发表于 2017-2-6 16:45
这只是警告,不影响程序执行
小甲鱼老师是想让你理解二维数组的存储方式

为什么答案是九,还是有些搞不懂?

人造人 发表于 2017-2-6 18:25:05

超凡天赐 发表于 2017-2-6 16:58
为什么答案是九,还是有些搞不懂?

qq1242009750 发表于 2017-2-7 01:40:53

本帖最后由 qq1242009750 于 2017-2-7 01:47 编辑

因为你函数中定义的是int a【】【3】而你输入的是 int a 【3】【4】
当编译器检查的时候就会发出警告,你试一试把函数中的 int a 【】【3】 ,改为 int a 【】【4】,就可以了。
如果还有警告,就是编译器的编译检测问题了,有的编译器比较严格,有的编译器比较放松

四十二 发表于 2017-2-8 15:37:04

你编译器还挺洋气的(睾贵的mac)。

所谓下标也是按顺序的,在里是第九个,里第九个数正好是9。
页: [1]
查看完整版本: 我的编译器会警告,警告类型不同,这是为什么?