当前位置:网站首页>【C语言】关于数组传参问题/首地址
【C语言】关于数组传参问题/首地址
2022-08-03 05:25:00 【EurekaO-O】
数组在作为参数传递时,传递的是整个数组还是首地址呢?
先来看一段代码:
void main() {
int nums[] = { 1,2,3,4,5 };
printf("&nums = %p\n", &nums);
printf("&nums = %p\n", &nums+1);
putchar('\n');
printf("nums = %p\n", nums);
printf("nums[0] = %p\n", &nums[0]);
printf("nums[1] = %p\n", &nums[1]);
}运行结果:
从运行结果可以看到,nums的地址和nums[0]的地址是相同的,也就是说nums存储的其实是数组第一个元素的地址。数组名其实是个指针变量,值就是第一个元素的地址。类型取决于数组元素的类型。
注:&nums取出的值其实是整个数组的地址,从运行结果可以看出来,虽然nums和&nums取出来的地址相同,但本质上是不相同的,可以看&nums+1和&nums[1]的地址对比。
现在了解了数组地址后,再回到上面的问题:数组在作为参数传递的时候是否传递的也是首地址呢?
再来看下面这段代码:
void test1(int nums[]) {
printf("nums = %p\n",nums);
printf("nums[0] = %p\n",&nums[0]);
printf("nums[1] = %p\n",&nums[1]);
}
void test2(int * nums) {
printf("nums = %p\n", nums);
printf("nums[0] = %p\n", &nums[0]);
printf("nums[1] = %p\n", &nums[1]);
}
void main() {
int nums[] = {1,2,3,4,5};
test1(nums);
putchar('\n');
test2(nums);
}运行结果:

可以看到其实test1和test2执行结果相同,传递的都是首地址,也证明了数组名其实是一个指针变量。
注意:当使用sizeof运算符和单目运算符&时例外
1.sizeof表示取出整个数组的大小
2.&nums取出的地址是整个数组地址(不是首元素地址)
关于数组传参问题/首地址到这里就结束了,如果您有什么其他补充的或其他想法的可以留在评论区~

第一次学C语言如果有不好的地方请留在评论区或私信我也可以,以后有空的话也会经常发博客。谢谢支持!~
边栏推荐
猜你喜欢

电子元器件的分类有哪些?

电子元器件和电子元件的区别有那些?

自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn

常见的电子元器件分类介绍-唯样商城

自监督论文阅读笔记SELF-SUPERVISED SPECTRAL MATCHING NETWORK FOR HYPERSPECTRAL TARGET DETECTION

PCB设计经验之模拟电路和数字电路区别为何那么大

ZEMAX | 绘图分辨率结果对光线追迹的影响

pandoc -crossref插件实现markdwon文档转word后公式编号自定义

ZEMAX | 如何使用渐晕系数

二分查找4 - 搜索旋转排序数组
随机推荐
cobalt strike 的基础使用
VCC(电源)和 GND(地)之间电容的作用
二分查找2 - x的平方根
Delightful Nuxt3 Tutorial (2): Build a Blog Quickly and Easily
最优化方法概述
快速的将结构体各成员清零
自监督论文阅读笔记FIAD net: a Fast SAR ship detection network based on feature integration attention and self
NIO知识汇总 收藏这一篇就够了!!!
电子元器件和电子元件的区别有那些?
B.1#【编程语言】—1 arm 汇编指令
二分查找5 - 第一个错误的版本
@JsonProperty和JSONField的区别?
A.1#【内存管理】——1.1.3 page: struct page
ZEMAX | 如何倾斜和偏心序列光学元件
MySql的Sql语句的练习(试试你能写出来几道呢)
double型数据转字符串后通过MCU串口发送
设备树(devicetree)-dts语法
MySql【后面附有练习题】
内网渗透信息收集
Qemu 搭建Armv8 平台