1)一维数组中: 元素
例如:int a[5]={0};
sizeof(a)=? 指的是数组中所有元素所占字节数; =20
sizeof(*a)=? 指的是数组中一个元素所占字节数; =4
printf(“%p\n”,a); a 为数组首元素地址; 0x80
printf(“%p\n”,&a); &a 为数组地址; 0x80
printf(“%p\n”,a+1); a+1为数组第二个元素地址; 0x84
printf(“%p\n”,&a+1); &a+1 为下一个数组地址; 0x94
printf(“%d %d\n”,sizeof(a),sizeof(a)/sizeof(*a)); 20 5
2)二维数组中: 行
例如:一个二维数组a[3][4]中,哪个不能表示a[1][1]的是?
1 *(a[1]+1);
2 *(&a[1][1]);
3 (*(a+1))[1];
4 *(a+5); 错误
3)strcat(A,B):连接字符串
strcpy(A,B):复制(覆盖原来的字符)
strcmp(A,B)比较
4)函数调用的步骤:
1.通过函数名,找到函数入口
2.给形参分配内存
3.参数 传递 :地址传递,实参地址传给形参,同个单元,双向传递
数值传递,形参与实参占用不同内存单元,单向传递
4.执行函数体
5.返回值
6.释放空间
5)static
修饰全局变量:只在本文件访问
修饰局部变量: 只被定义一次,分配一次内存空间,改变变量的生命周期,延长至程序结束再释放
修饰函数:只在本文件调用
6)想让两个文件链接一起可以gcc xxx.c xxx.c -o xxx :
这样在主函数调用时可以用extern来调用本文件以外的函数或变量