gpt4 book ai didi

c - char 数组的 sizeof 操作

转载 作者:行者123 更新时间:2023-11-30 18:00:24 26 4
gpt4 key购买 nike

Possible Duplicate:
How to find the sizeof(a pointer pointing to an array)
Sizeof an array in the C programming language?

#include<stdio.h>

void doit(char x[10]){
printf("%d\n", sizeof(x));
}

void main(void){
char x[10];
printf("%d\n", sizeof(x));
doit(x);
}

** 我不知道为什么我的问题第一次被删除。 **这里的两个输出是不同的。显然,第一个知道 x 是一个数组,第二个只知道它是一个 ptr。我的问题是为什么编译器知道在第一种情况下它是一个数组而不是 ptr?

最佳答案

我不是编译器专家,但在编译阶段,编译器会执行称为语义分析的操作。在此阶段,完成类型检查。 sizeof 也是一个编译时运算符(可能除了 VLArray),并且在类型检查期间,编译器确定在 main 中,x 是一个数组,并且在doit 函数它是一个指针。

就像,编译器是房子的主人,因此它知道租户的类型。

阅读wiki上的编译过程

关于c - char 数组的 sizeof 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com