c - Typedef 数组怪异

标签 c arrays

我遇到过一些我认为已损坏的代码,但由于某些我无法理解或无法找到解释的原因而起作用。如果有人能让我直截了当,我将不胜感激。它在以下代码片段中进行了演示:

#include <stdio.h>

typedef char char_block[16];

void f(char_block *b) {
    printf("block 0x%p - b\n",   b);
    printf("block 0x%p - *b\n", *b);
}

main() {
    char_block b = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
    f(&b);
}

使用 g+ 编译并执行,打印:

block 0x0x7fff4794b4e0 - b
block 0x0x7fff4794b4e0 - *b

我曾天真地以为

A declaration of a parameter as ‘‘array of type’’ shall be adjusted to ‘‘qualified pointer to type’’

意味着该函数等同于

void f(char ** b) 

但是这里发生了其他事情?

最佳答案

char_block *char (*)[16]

关于c - Typedef 数组怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38436048/

相关文章:

c# - PInvoke - 试图读取或写入 protected 内存。这通常表明其他内存已损坏

c - 如何在C中的数组中输入字符?

java - 尝试在 Java 中打印数组时出现异常

javascript - 使用 array.map 填充数组的值

javascript - 如何根据匹配参数从数组中选择几个随机 id 值?

javascript - 更改排序顺序时更新键值的最短方法是什么

c - fclose()/pclose() 可能会阻塞某些文件指针

c - 关于C作为中间语言的问题

c - 如何使用指向结构指针的指针?

java - 如何对ArrayList中的数组进行排序?