C语言中关于函数中使用数组作为参数的理解

函数中使用数组作为参数时,比如

void function(int a[]);

我们在调用该函数时,只需要传入一个int型变量的地址即可,该地址将作为形参数组 a[] 的首元素地址,值得注意的是,我们传入的实参,可以是一个int数组中任意元素的地址,比如

int array[5]={1,2,3,4,5};
function(array); //数组名即首元素地址
function(&array[1]); //array[1]的地址将作为形参数组的首元素地址
funtion(&array[2]); //rraya[2]的地址将作为形参数组的首元素地址

甚至是一个普通int型变量的地址也可以作为实参,比如

int i=1;
function(&i); //i的地址将作为形参数组首元素的地址

上种情况是能够通过编译的,但容易想到这样做很危险,当我们取形参数组的第二个元素时,这个元素的地址我们根本不知道是谁在使用

另外,访问形参数组的元素时,是不会提示我们数组越界错误的,如果你想,你可以访问到a[9999],当然,这部分内存是谁在使用,我们并不知道~比如

#include<stdio.h>

void get_array(int a[]);
void get_array(int a[]){
    int i;
    for(i=0;i<100;i++){
        printf("a[%d]=%d\n",i,a[i]);
    }
}

void main(){
    int a[6]={0,1,2,3,4,5};
    get_array(a);
}

打印结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值