小编use*_*385的帖子

Typedef数组古怪

我遇到过一些我认为已被破坏的代码,但由于我无法理解的东西或找到解释而起作用.如果有人能帮我,我会非常感激.它在以下片段中演示:

#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);
}
Run Code Online (Sandbox Code Playgroud)

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

block 0x0x7fff4794b4e0 - b
block 0x0x7fff4794b4e0 - *b
Run Code Online (Sandbox Code Playgroud)

我天真地认为

参数声明为''类型数组''应调整为''限定指向类型''

意味着该功能将等同于

void f(char ** b) 
Run Code Online (Sandbox Code Playgroud)

但是还有其他事情发生在这里?

c arrays

3
推荐指数
1
解决办法
113
查看次数

标签 统计

arrays ×1

c ×1