当前位置:网站首页>【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语言如果有不好的地方请留在评论区或私信我也可以,以后有空的话也会经常发博客。谢谢支持!~
边栏推荐
- Typora
- 二分查找3 - 猜数字大小
- MySql的Sql语句的练习(试试你能写出来几道呢)
- 二阶段提问总结
- Eight, the difference between the interface of the abstract class
- 自监督论文阅读笔记 Incremental-DETR:Incremental Few-Shot Object Detection via Self-Supervised Learning
- 进程间通信IPC - 信号量
- 9. Please introduce the class loading process, what is the parent delegation model?
- 2021-04-30
- VCC(电源)和 GND(地)之间电容的作用
猜你喜欢
随机推荐
二、Exception和Error有什么区别?
神经网络之感知机
电子元器件的分类有哪些?
九、请介绍类加载过程,什么是双亲委派模型?
MCU接收串口字符型数据转换成数据型数据
基于南航app直减自动出票
6. What is the difference between Vector, ArrayList and LinkedList?(design, performance, safety)
ZEMAX | How to rotate any element around any point in space
贴片电阻的结构是怎样的?唯样商城
ZEMAX | 如何围绕空间中的任何点旋转任何元素
自监督论文阅读笔记 TASK-RELATED SELF-SUPERVISED LEARNING FOR REMOTE SENSING IMAGE CHANGE DETECTION
opencv目标检测
VS2022 encapsulates static libraries and calls static libraries under window
常见的电子元器件分类介绍
设备树(devicetree)-dts语法
设备树解析源码分析<devicetree>-1.基础结构
002_旭日X3派初探:TogetherROS安装
观看华为AI技术领域课程--深度学习前三章总结
Typora
window下VS2022封装静态库以及调用静态库








