数组

数组名。

1.数组名是一个指针常量

2.两种情况数组名不用指针常量表示。

        sizeof +数组名 :返回数组的长度。不是指向数组的指针的长度。

        & +数组名:指向数组的指针。 不是指向某个指针常量的指针。

3.赋值。

	int a[10];
	int b[10];
	int *c;
	c=&a[0];//指向数组第一个元素的指针。数组名本身的值。
	c=a;//同上,数组名赋值的是一个指针的拷贝。而不是整个数组。

	b=a;//非法。数组名不表示整个数组。必须使用循环赋值。

	a=c;//非法。a是常量,不能修改。	

 

下标引用

1.下标引用和间接访问完全相同。

/*下标引用*/
	int array[10]={0,1,2,3,4,5,6,7,8,9};

	int *ap = array +2;

	printf("%d",ap[0]);//指针可以下标引用,与间接访问一样,对等的间接访问表达式为*(ap+0)

	printf("%d",ap[-1]);//负值的下标引用,*(ap-1)

	printf("%d\n",ap[9]);//越界,但不提示错误。下标引用可以作用任意的指针,而不是数组名,所以编译器不会报错。

	printf("%d",2[array]);//合法的,但是可读性差,*(2+array)
posted @ 2018-07-08 17:26  lightmare  阅读(124)  评论(0编辑  收藏  举报