当前位置:网站首页>【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语言如果有不好的地方请留在评论区或私信我也可以,以后有空的话也会经常发博客。谢谢支持!~
边栏推荐
猜你喜欢
ZEMAX | 绘图分辨率结果对光线追迹的影响
关于芯片你了解吗?
网络间通信
自监督论文阅读笔记 Self-Supervised Visual Representation Learning with Semantic Grouping
VS2022 encapsulates static libraries and calls static libraries under window
Dynamic adjustment subject web system?Look at this one is enough
BurpSuite 进阶玩法
自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration
window下VS2022封装动态库以及调用动态库
随机推荐
page fault-页异常流程
神经网络之感知机
自监督论文阅读笔记 DenseCL:Dense Contrastive Learning for Self-Supervised Visual Pre-Training
AI智能剪辑,仅需2秒一键提取精彩片段
ZEMAX | 如何围绕空间中的任何点旋转任何元素
softmax和最大熵
稳压二极管的工作原理及稳压二极管使用电路图
自监督论文阅读笔记Efficient Self-supervised Vision Pretraining with Local Masked Reconstruction
Makefile自动推导的简单例程
ZEMAX | 如何使用渐晕系数
二分查找4 - 搜索旋转排序数组
自监督论文阅读笔记 Incremental-DETR:Incremental Few-Shot Object Detection via Self-Supervised Learning
BurpSuite 进阶玩法
自监督论文阅读笔记 TASK-RELATED SELF-SUPERVISED LEARNING FOR REMOTE SENSING IMAGE CHANGE DETECTION
常见的电容器有哪些?唯样商城
深度学习理论课程第四、五章总结
IO 复用
深度学习理论课程第八、九、十章总结
Qemu 搭建Armv8 平台
二分查找1-实现一个二分查找