gpt4 book ai didi

c - 为什么 sizeof 运算符给出不同的输出

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:30 26 4
gpt4 key购买 nike

我正在为即将参加的类(class)学习 C 语言的基础知识,现在我正在学习指针和数组。我一直在使用许多引用资料来学习它,但在我拥有的这本“Head First into C”书中,有以下内容:

char s[] = "How big is it?"
char *t = s;
printf("%i\n", sizeof(s)); /* returns 15 */
printf("%i\n", sizeof(t)); /* returns 4 or 8 */

没问题,但如果我将最后一行更改为:

printf("%i\n", sizeof(*s));  /* returns 1 (on my compy anyway) */

所以我的问题是为什么这不同?如果这是一个非常基本的事情,我深表歉意,但我还没有完全理解指针的概念。

最佳答案

一个是数组的大小,一个是指针的大小。

数组和指针在C中是不同的类型,虽然数组和指针之间有隐式转换规则..

由字符串字面量初始化的数组的大小是字符串的字符数+空终止符的1。

指向 char 的指针的大小(即 char *)是一个实现定义的大小足以容纳指针值的对象。

关于c - 为什么 sizeof 运算符给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24986170/

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