/*数组*/
#include <stdio.h>
int arrMy(int arr[],int size);
int add(int d);
int main(){
int a=70;
int b=80;
int c=90;
/*
定义: 数据类型 数组名[长度(数量)] ;
int arr[3];
*/
/*初始化:类型 数组名[(长度)]:={元素1,元素2,…}*/
int arr[3]={70,80,90};
/*初始化的第二种方式,单独初始化*/
int arr2[3];
// arr2={70,80,90};//错误
arr2[0]=70;
arr2[1]=80;
arr2[2]=90;
/*初始化的第三种方式,省略长度*/
int arr3[]={70,80,90};
// printf("arr3[1]=%d\n",arr3[1]);
// 数组必须要定义长度(正整数),
// int arr4[-1]={};//错误
// 定义时可初始化(长度必须是常量)或之后单独初始化
int count=3;
// int arr5[count]={70,80,90};//错误
int arr5[count];
arr5[0]=70;
arr5[1]=80;
arr5[2]=90;
// 如果省略长度,那么表示,后面初始化几个元素,长度就为几.
int arr6[3]={1,2};
arr6[2]=3;
int arr7[]={1,2,3};
// arr7[2]=3;//错误
// int arr8[];//错误.当没有在定义数组时赋值.不能省略长度.
// 类型一致.不然可能丢失精度.
// arr7[0]=2.2;
// 数组第一个元素的地址就是这个数组的地址.二者是一致的
// printf("%p---%p\n",arr7,&arr7[0]);
// 地址传递时,函数里可以直接改变变量的数据.
// printf("%d\n",arr7[0]);//=arr7[0]=1;
// int num= arrMy(arr7);
// printf("%d\n",arr7[0]);//=arr7[0]=10;
// printf("%d---%lu\n",num,sizeof(arr7));//arr7代表是整个数组.
// int d=5;
// add(d);
// printf("%d\n",d);
// 计算一个数组的长度
int size=sizeof(arr7)/sizeof(int);
printf("arr7的长度是=%d\n",size);
arrMy(arr7,size);
return 0;
}
//把数组的第一个元素的值改为10.并且打印这个数组.
int arrMy(int arr[],int size){
//这里传递过来的是数组的地址.而地址是指针类型,指针类型在当前环境下占8字节
arr[0]=10;
for (int i=0; i<size; i++) {
printf("arr[%d]=%d\n",i,arr[i]);
}
return sizeof(arr);
}
int add(int d){
return d+10;
}
|
|