//一维数组的基础知识
//1>数组中的每个元素的地址是连续的
//2>数组名的地址是数组首元素的地址
//3>数组名是一个常量,其地址不可以改变
//4>数组中首元素的值可以改变
//5>数组的元素是变量
//二 一维数组长度的计算方法
//1.len=sizeof(数组名)/sizeof(数据类型)
//sizeof(数组名)算的是数组的总字节数
//三 把数组中的某个元素作为函数的参数
//其实就是跟基本类型的一样
//注意:如果函数的参数要求传入的是一个数组,那么传入数组元素就会报错
//如果是数组元素作为函数的参数,是值传递
//四 值传递与地址传递
//值传递:是把实参传给行参,实现的单向传递
//地址传递:传递的是数组的地址,在函数内部改变了值,那么外部也会改变,等于共享了内存空间
/*运行结果
数组名的地址是:
0x7fff5fbff7d0
0x7fff5fbff7d0
0x7fff5fbff7d4
0x7fff5fbff7d8
0x7fff5fbff7dc
数组长度len=4
总字节数=16
9
返回之后的值9
Program ended with exit code: 0
*/
#include <stdio.h>
int pass(int a[],int len){
a[0]=9;//在函数内部改变值
printf("%d\n",a[0]);
return a[0];
}
int main(int argc, const char * argv[]) {
int a[4]={3,1,2,3};
printf("数组名的地址是:%p\n",a);
for (int i=0; i<4; i++) {
printf("%p\n",&a[i]);
}
int len=sizeof(a)/sizeof(int);
printf("数组长度len=%d\n",len);
int total=sizeof(a);
printf("总字节数=%d\n",total);
// pass(a[1]);//值传递
pass(a,4);//地址传递
printf("返回之后的值%d\n",a[0]);
return 0;
}