如何写出高质量c代码 (二)数组和指针
程序员文章站
2024-03-15 20:20:48
...
今天时间不早了,关于数组和指针的的问题我们简单的来做下比较
1.指针是变量,数组名是常量
数组名是一个常量,因此不可以作为左值修改
例如:
int array[10];
int *parray = array;
for(int i=0;i<10;i++)
{
printf("[%d] = %d",i,*parray);
++parray;
//这样是错误的
//printf("[%d] = %d",i,*array);
//++array;
}
2.大小不一样
数组名的大小是整个数组的大小,而指针在32位机上始终都是4个字节
int a[10];
int *pa = a;
printf("szieof(a) = %d sizeof(pa) = %d \n",sizeof(a),sizeof(pa));//40 4
3.声明方式
这个自然也是不同的,哈哈哈凑字数了。
int *x; //定义指针
int y[10]; //定义数组
其实归根到底,指针和数组不相同的,确切的说不完全相同
int array[];等价于 int * const array,你不能改变array的值
下面我来说说相同点和相关应用
1. extern int a[10]; //这里不能改为指针
2. 定义的时候 int a[]; //这里当然也不能改成指针
3. func(a[]) //这里是可以修改成指针的,随你怎么用
4. 获取第N个数组元素/地址的时候,也是可以随便用的 a[N]等价于*(a + N)等价于 *(pa + N)
上一篇: 7.Java之控制流程语句
下一篇: Java基础学习笔记01