C语言——数组参数传递&数值的参数传递

C语言数组参数传递的注意事项,demo code中//标出

#include<stdio.h>

void printData(int data)
{
 printf("%d\n",data);
}
void printArr(int arry[],int len)//形参中不存在数组的概念,即使中括号约定了数组的大小也无效
                                //传递的为一个地址,是数组的首地址
{
 int i;
 printf ("printArr的大小是%d\n",sizeof(arry));//在操作系统OS中用8个字节表示一个地址,不会变化
 for (i=0;i<len;i++){
  printf ("%d  ",arry[i]);
 }
 
}
int main()
{
 int len;
 int arry[]={1,2,3,4};
 printData(arry[2]);
 len=sizeof(arry)/sizeof(arry[0]);
 int i;
 printf ("main中Arr的大小是%d\n",sizeof(arry));//会根据定义中的数值变化,一个4字节,3个12字节
 for (i=0;i<len;i++){
  printf ("%d  ",arry[i]);
 }
 putchar ('\n');
 printArr(&arry[0],len);//传递过去为一个地址,填写首地址也行,第一个元素的地址也是数组的首地址
 printArr(arry,len);//数组名代表整个数组的首地址
 return 0;
}

C语言参数传递对比

//参数传递中,数值的传递与数组的传递不同,

//数值的传递是传递数据,重新开辟临时地址运算

//数组的传递是传递该数据的地址,被传递的运算在该数组的地址上进行

#include<stdio.h>
void changeData(int data)//只传递数值,开辟临时空间运算
{
 data=data+100;
 printf ("%d %p\n",data,&data);
}
int main()
{
 int data =10;
 changeData(data);
 printf ("%d %p\n",data,&data);
 return 0;
}

#include<stdio.h>
void changedata(int data[])
{
 data[0]=data[0]+100;
 printf("%d %p\n",data[0],&data[0]);//打印出来与main函数地址相同,该值也相同
}
int main()
{
 int data[2]={10,20};
 changedata(data);//名称作为首地址进行传参
 printf ("%d %p\n",data[0],&data[0]);
 return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值