布条百科 - 专业百科知识分享的网站 手机版
首页 > 生活 >

别混淆了sizeof(数组名)和sizeof(指针)

160次浏览     发布时间:2023-05-28 09:20:11    

我们在C语言编程时挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事。比如类似下面的C程序代码片段:

for(i = 0; i< length; i++){printf(“数组元素是%d”, 数组[i]);}

用一个下标索引变量i来遍历整个C程序数组,length是数组的长度。当然了,length得提前计算出来,计算的方式有很多,很多朋友会想到用sizeof计算。不过,sizeof好归好,但是也要睁大你的双眼,小心用错,你若不信,请继续往下看。

先看传统的做法,C程序代码如下:

#include "stdio.h"int main(void) {int number[5] = {1,2,3,4,5};int index = 0;printf("数组的元素分别是:\n");for(index = 0;index < 5; index++){printf("%d ", number[index]);}printf("\n");return 0;}

最简单的方法就是写死了C语言数组长度,再用一个循环挨个儿输出。程序清晰易懂,结果是:

结果也是清晰易懂。

有的朋友会突发奇想,为何不这样来做:

#include "stdio.h"int main(void) {int number[5] = {1,2,3,4,5};int index = 0;int *p = &number[0];printf("数组的长度是: %d\n", sizeof(p));printf("数组的元素分别是:\n");for(index = 0;index < sizeof(p); index++){printf("%d ", number[index]);}printf("\n");return 0;}

增加了一个C语言指针变量p,指针变量p的初始值是数组首元素的地址。有的朋友企图用sizeof(p)来获取数组长度,这是不对的,请看结果:

从结果可以看到,sizeof(p)其实计算的是指针变量p的大小。在32位系统上,不管指针p指向的是整型数据,还是字符型数据,short型数据,long型数据等,指针p本身所占的内存字节数均为4。也就是要使用4个字节的大小来存储变量p的值。

我还见过有朋友这样用sizeof的,C程序代码如下:

#include "stdio.h"void print(int number[5]) {  int index = 0; ; printf("函数print中,数组长度是: %d ", sizeof(number));printf("函数中数组的元素分别是:\n"); for(index = 0; index < sizeof(number) / sizeof(number[0]); index++) {printf("%d ", number[index]); } printf("\n");} int main(void) {int number[5] = {1,2,3,4,5};print(number);return 0;}

这次C程序代码又修改了一下,将数组名number传给函数print,并且print函数的形参看上去像是一个数组。运行结果是

诺诺,运行结果不是预期中的结果啊。其实,C语言函数print形参看上去像是一个数组,于是有的朋友就会认为它就是一个数组,于是就发生了使用sizeof来计算数组长度;真实情况是print函数的参数还是一个指针,指针,指针,没错,就是一个C语言指针,所以sizeof(number)计算的还是指针的大小。初学的朋友们一定要切记!

相关文章

家庭版火锅怎么做才好吃(火锅在家吃简单方便)

其实,现在自制火锅,实在太简单了。以前还需要自己熬火锅料,现在不管什么品牌的火锅,都有现成的火锅料卖,熬一锅骨头汤,放入火锅底料,就可以开烫了,足不出户就能吃到原滋原味的品牌火锅。相当方便。我家这一锅看这色泽就知道,那是相当的麻和辣哦。地道四川人就爱这味儿,无辣不欢。家庭火锅或许菜品没有火锅店那么丰

2024-09-16 10:36:22

黎明杀机攻略教学(黎明杀机快速翻窗技巧解析)

有些玩家反映说,不按shift还好,正常翻,一按住shift就不能翻过去。那么好,下面为大家解析快速翻窗的技巧。快速翻窗技巧正常情况,快速翻窗的按键是shift+space。但是,shift+space是不是很眼熟?没错,它是大部分输入法的全半角切换按键。如果是win7系统,默认的系统输入法全半角切

2024-09-16 10:21:49

猪肉炒芹菜的做法过程(这样炒出来的芹菜猪肉又香又嫩又好吃)

吃绿色的蔬菜可以改善人们的食欲,芹菜作为一种健康营养的绿色蔬菜,深受很多人们的喜爱。经常在外边吃饭的人们会发现,芹菜的做法比较多样化,吃的比较多的就是芹菜炒猪肉,但是日常自己却炒不出那个味道。你知道芹菜炒猪肉怎么才能又香又能又好吃吗?今天我们就来一起学习一下吧。芹菜也是一种能降低血压的食物,现在许多

2024-09-16 10:06:50

广州旅游攻略(10大游玩景点推荐)

广州,作为中国南方的一颗璀璨明珠,不仅拥有丰富的历史文化,更以其独特的风景和多元化的城市生活吸引着无数游客。今天,就让我们一起探索广州的十大游玩景点,感受这座城市的无限魅力。1. 广州塔广州塔,作为广州的地标建筑,是游客们不可错过的景点。它高600米,是中国第二高塔。登上塔顶,可以360度俯瞰广州的

2024-09-16 09:51:49

飞车双喷怎么操作(飞车双喷操作技巧 双喷方法)

一起来飞车双喷操作技巧双喷其实就是两次漂移,再加上两次连续的喷火,就会形成双喷,可以加速很长一段时间,并且动作超级酷炫地把玩家全部都甩在身后,双喷的话必须经常练习,如果不练习,就没有办法掌握方法,也不能达到双喷,毕竟没那么容易。1、先漂移再双喷,理解了这个之后,双喷就很简单了,在第一次漂移之后,玩家

2024-09-16 09:36:26

大红袍和金骏眉哪个好(大红袍和金骏眉大比拼)

乌龙茶中的大红袍口感独特,深受众多消费者喜爱。而属于红茶类的金俊眉更以其高品质在国内外打响了知名度!两者归属的茶类不同,茶性也不同,那么,接下来我们一起来了解一下,大红袍和金骏眉究竟孰优孰劣呢?1.制作工艺不同大红袍的制作较为复杂,需要做青以及揉捻等程序,而金骏眉则不需要通过这些程序。在原料的取材上

2024-09-16 09:21:46