C语⾔:数组和函数(算数组⼤⼩,数组传参,数组形参)⼀.数组的⼤⼩计算(⽤sizeof):
int a[3];⼀个整型数占⽤空间4个字节,3个占⽤空间12个字节
char b[3];⼀个char型占⽤空间1个字节,三个占⽤空间3个字节
printf("a数组的⼤⼩是:%d\n",sizeof(a));
printf("b数组的⼤⼩是:%d\n",sizeof(b));
printf("⼀个整数的空间是:%d\n",sizeof(a[0]));
printf("⼀个字符型数的空间是:%d\n",sizeof(char));
问:两个数组有什么相同点,不同点
相同:数组的元素个数为3
不同:1、数组的类型不同
2、数组的内存⼤⼩不同
问:如何计算数组中元素的个数。数组的总⼤⼩/⼀个类型的⼤⼩
printf("a数组有%d个元素\n",sizeof(a)/sizeof(a[0]));或者sizeof(a)/sizeof(int)
⼆.数组的传参,传的是地址:
当我们学到指针的时候,就可以将函数中的参数 int array[ ] 直接
改为 int *array
void hanShu(int array[]){改成指针:void hanShu(int*array)
}
int main(){
int array[1]={3};
hanShu(array);
}
将array这个数组进⾏传参时,有两种⽅式:
sizeof 指针1.hanShu(array);
2.hanShu(&array[0]);
总结:数组名或者取数组第⼀项都可以作为数组的地址使⽤
(因为数组的第⼀项就是表⽰数组的地址)
三.数组的形参仅表⽰是⼀个地址,中括号中数组的⼤⼩是⽆效的:
**void hanShu(int a[ ])
.
1.形式参数中,虽然写的⼀个数组的样⼦,中括号中数组的⼤⼩是⽆效的
2.这⾥不管中括号中写多少,都不能代表形参数组有多⼤!
3.这⾥的中括号的作⽤仅仅⽤来表⽰:该参数是⼀个数组,是⼀个(地址!)在问
windows啊哈c中,⽤4个字节表⽰地址,linux64位中⽤8个字节表⽰。**
.
四:代码如下:
#include<stdio.h>
#include<stdlib.h>
//第⼀个参数是数组的⾸地址,第⼆个参数是数组的个数
void arrayPrint(int datas[],int cnt)//形式参数中,虽然写的⼀个数组的样⼦,中括号中数组的⼤⼩是⽆效的
//这⾥不管中括号中写多少,都不能代表形参数组有多⼤!
//这⾥的中括号的作⽤仅仅⽤来表⽰:该参数是⼀个数组,是⼀个(地址!)在问windows啊哈c中,⽤4个字节表⽰地址,linux64位中⽤8个字节表⽰。
{
//printf("数组的⼤⼩是:%d\n",sizeof(datas));
//printf("⼀个int数据的⼤⼩是:%d\n",sizeof(int));
//printf("函数调⽤中:datas 数组中元素个数为 %d个\n",sizeof(datas)/sizeof(datas[0]));
int i;
for(i=0;i<cnt;i++){
printf("%d ",datas[i]);
}
putchar('\n');//putchar 输出⼀个字符 getchar()获取⼀个字符的输⼊,当时⽤在过滤回车
}
int main()
{
int array[3]={11,22,38};
//printf("数组的⼤⼩是:%d\n",sizeof(array));
//printf("array 数组元素个数为 %d个\n",sizeof(array)/sizeof(array[0]));
arrayPrint(array,sizeof(array)/sizeof(array[0]));
arrayPrint(&array[0],sizeof(array)/sizeof(array[0]));//数组名或者取数组第⼀项都可以作为数组的地址使⽤(因为数组的第⼀项就是表⽰数组的地址)
system("pause");
return0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论