C语言中对数组,指针,下标,的理解

            # C语言中,对一维数组的指针的下标的理解

解决问题:1.数组的意义和类型
2.数组名的类型和意义
3.指向数组的指针的意义
4.指针加下标的意义

例:
一、 int a[10];
1、a[10]是数组,其中类型是整型。
2、a是数组名,它的值是指针常量,即数组第一个元素的地址,类型取决于数组元素的类型。
此例中,a 的意义“指向int的 常量指针”。(大多数情况下,数组名的意义)
注意:1.不要根据以上事实得出数组和指针是相同的结论,数组和指针具有一些完全不同的特性。
2.数组具有确定数量的元素,而指针只是一个标量值。编译器用数组名来记住这些属性,只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量。
3.注意2中说明数组名的值是指针常量,而不是指针变量,指针常量的值是固定的。所指向的是内存中数组的起始位置。
4.是否可以修改这个指针常量。理论上,修改是把真个数组移动到其他位置。但是,程序完成链接后,内存中的数组位置已经固定了,所以想要修改已经晚了。所以说,数组名的值是一个指针常量。
二、结论:C的下标引用与间接引用表达式是相等的
例如:int a[10];
int *b=a;
*(a+1)与a[1]相等
b与a相等
*b与a[0]相等
b[1]与 间接运算 (b+1)相等 ,即与 星号(a+1)相等。
所以b[1]与a[1]相等
注意:不要越界。例如b[11]是越界的在以上那个例子中

你可能感兴趣的:(C语言)