c - 为什么我没有收到任何错误?在这两行之间--- typedef int floa[1]; floa a[5]={5,6,1,2,6,8};

标签 c

请解释一下代码背后的逻辑/..

我在代码块中做。我得到了答案 20。为什么?请解释一下。

#include <stdio.h>
#include <conio.h>
int main()
{
    typedef int floa[1];
    floa a[5]={5,6,1,2,6,8};

    printf("the value is %u",sizeof(a));
    return 0;
}

我应该得到一个错误,但我没有,为什么?

最佳答案

关键在这里:typedef int floa[1]

#include <stdio.h>                                                                                      
int main()                                                                                              
{                                                                                                           
    typedef int floa[3];                                                                                
    floa a[4]={5,6,1,2};                                                                                

    printf("the value is %u value:%d %d %d %d %d %d %d %d",sizeof(a), a[0][0], a[0][1], a[0][2], a[0][3], a[1][0], a[1][1], a[1][2], a[1][3]);
    return 0;                                                                                           
} 

运行上面的代码,你就会理解你的代码。上面的代码给出了 size = 48,所以基本上你的 typedef 正在创建“m x n”矩阵效果。

但正如 Lee Daniel Crocker 提到的,在 typedef 中隐藏数组并不是一个好主意。

关于c - 为什么我没有收到任何错误?在这两行之间--- typedef int floa[1]; floa a[5]={5,6,1,2,6,8};,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57168545/

相关文章:

c - 负十进制转二进制c代码

c - 由于在 for 循环内使用了 toupper 的条件而给出非大写输入时出现段错误 [C]

c - 二进制交织、二进制混合、交替位

c - R 中的 colMeans()、colSums()... 是否也并行化?

c - libc stat 函数和 LuaJIT

通过 LED 循环

c - 如何让 switch() 在 C 中循环多次?

c - 为什么我不能用其他静态常量指针初始化静态常量指针?

c - 使用指针搜索特定字符串

c - 具有虚拟头和尾的双向链表实现