c语言,关于sizeof(数组名)的问题

我看视频里面讲的清清楚楚, sizeof(数组名)算出来的是-------------这个数组“地址”的存储大小,也就是等于8, 但是我自己测试的话结果却不是这样 为什么呢?

当数组名作为函数参数传递后,“退化”为指针,sizeof自然也就不能得到数组的长度,只是得到一个指针的长度而已。
你的试验代码里,数组名并没有作为函数参数传递过,他还是一个数组名,所以sizeof还是能得到数组的长度。
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言,关于sizeof(数组名)的问题
当数组名作为函数参数传递后,“退化”为指针,sizeof自然也就不能得到数组的长度,只是得到一个指针的长度而已。你的试验代码里,数组名并没有作为函数参数传递过,他还是一个数组名,所以sizeof还是能得到数组的长度。

C语言中sizeof问题
结论是,在C语言中,`sizeof`操作符的结果会受到数据模型和变量用法的影响。让我们深入探讨这两个因素:1. **数据模型影响**:不同的C编译器可能采用LP32、ILP32、LP64、ILP64或LLP64等数据模型,其中char类型的存储空间通常为1字节,但并非所有平台都如此。例如,`sizeof(char)`的结果取决于编译...

c语言求解答,在定义的函数中调用sizeof?
在main函数里直接操作数组,sizeof(数组名)是数组占用的字节数 用数组名做参数传递,到了子函数里他就是个指针,指向数组首地址的指针 在子函数里sizeof(形参)得到的是一个指针占用的字节数,64位系统返回的是8,sizeof(int)等于4,所以结果是2 在子函数是不能通过这个方法得到整形数组的长度,...

c语言sizeof函数用法
在C语言中,sizeof是一个内置的运算符,用于获取数据类型或变量所占用的字节数。它返回一个sizeof类型的值,该值表示数据类型或变量所占用的字节数。sizeof运算符可以用于任何数据类型或变量,包括基本数据类型、结构体、指针、数组等。 sizeof运算符的语法如下:```c sizeof (数据类型\/变量) ``` ...

关于sizeof数组的问题
因为实际传给函数的是指针,是数组的地址。函数参数只取数组地址,不能得到完整的数组信息。指针的sizeof刚好是4字节。可以理解为:char *p = des;sizeof(p);所以函数参数要含有数组大小。

c语言中的sizeof()是如何分辨数组名和指针的?
sizeof函数并不区分数组名与指针,它只是简单告诉你操作数的大小。例如,给数组时,它告诉你数组的大小;给指针时,则告诉你指针的大小。关键在于void printSize(int a[10])中的a,其实它的类型是被调整为指向int的指针,而非数组。当声明参数为「某某类型的数组」时,其会被调整为「某某类型的指针」...

sizeof在c语言中是什么意思
sizeof在C语言中的含义 在C语言中,`sizeof`是一个内置的操作符,主要用于计算对象所占用的内存大小。它能返回一个数据类型或对象所占用的字节大小。此操作符是编译时确定的,也就是说在编译阶段就会计算得出结果。一、基本用法 `sizeof`的使用非常简单直观。当你想知道一个变量或数据类型所占用的...

c++数组,sizeof()函数的问题
你好 我来解答一下。首先你下面两个说法是错误的。1.数组名a只是数组第一个元素的地址 数组名a只是和数组第一个元素的地址的值相同而已,两者类型是不一样的。比如说一个long b=10,和short c = 10。2.为什么sizeof()根据数组第一个元素的地址就可以得到整个数组的大小?sizeof()是不能根据数组...

c语言如何判断一个数组的最后一位的下标,求大神
求最后数组最后一位可以用sizeof函数 如果是a[10]的就是:解释就是直接用sizeof检查数组a的内存大小(以字节为单位),减去1(因为数组是从0开始)就可以得到数组最后一个值。所以,i=sizeof(数组名)\/sizeof(数组类型) -1;

关于sizeof()的一个问题
\/\/b是数组的起始地址,a不也是数组的起始地址吗?a是数组名,同时它也是地址啊。a和b指向同一内存地址啊。为什么sizeof(a)就不是4了?老不看清楚!b已经退化为指针,当然不一样。a虽然和b指向同一内存地址,但是定义阿a的时候不是还有一个N吗?(char a[N]),虽然你在程序中没写,但编译器可以...

相似回答
大家正在搜