当前位置:网站首页>【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语言如果有不好的地方请留在评论区或私信我也可以,以后有空的话也会经常发博客。谢谢支持!~
边栏推荐
- 建立平衡二叉树简单demo
- 自监督论文阅读笔记SELF-SUPERVISED SPECTRAL MATCHING NETWORK FOR HYPERSPECTRAL TARGET DETECTION
- A.1#【内存管理】——1.1.3 page: struct page
- 6. What is the difference between Vector, ArrayList and LinkedList?(design, performance, safety)
- SolidWorks 操作视频 | 流体分析结果演示
- g++ parameter description
- 快速的将结构体各成员清零
- PCB设计经验之模拟电路和数字电路区别为何那么大
- JS--正则表达式
- ZEMAX | 如何使用渐晕系数
猜你喜欢
随机推荐
设备树解析源码分析<devicetree>-1.基础结构
【七夕特效】 -- 满屏爱心
二分查找2 - x的平方根
ZEMAX | 探索 OpticStudio中的序列模式
MCU接收串口字符型数据转换成数据型数据
new / malloc / delete / free之间的区别
MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测
B.1#【编程语言】—1 arm 汇编指令
window下VS2022封装静态库以及调用静态库
Dynamic adjustment of web theme (2) Extraction
classpath: comparison with classpath*
A.1#【内存管理】——1.1.2 zone: struct zone
【第二周】卷积神经网络
【第三周】ResNet+ResNeXt
MySql的Sql语句的练习(试试你能写出来几道呢)
什么是参数化设计,通过实操了解一下? | SOLIDWORKS 操作视频
神经网络之感知机
【第四周】MobileNet和HybridSN
PCB设计经验之模拟电路和数字电路区别为何那么大
VSCODE 常见问题









