3个回答
展开全部
没见过你那么搞的。指针是可以用来表示数组元素,但也不是这么表示的。
int a[5];
是数组声明。这里变量a保存的是数组的首地址。我们常用的下标取数组元素的操作,其实是C语言针对数组指针取元素的一个简写表示。
不能将*和[]混用,编译器不认识的,不符合语法规范。
下面两种表示是等价的,都可以取出第n个元素:
int m = a[n]
int n = *(a+n);
*(a+1)[5]的表示是错的。你搞错了一件事:
在C中 int a[5];声明一个长度为5的int类型数组。这里,a[5]只是一种声明的写法,这里声明的变量是a,不是a[5]。
所以*(a+1)合法而*(a+1)[5]非法。*(a+1)效果上等同于a[1].
int a[5];
是数组声明。这里变量a保存的是数组的首地址。我们常用的下标取数组元素的操作,其实是C语言针对数组指针取元素的一个简写表示。
不能将*和[]混用,编译器不认识的,不符合语法规范。
下面两种表示是等价的,都可以取出第n个元素:
int m = a[n]
int n = *(a+n);
*(a+1)[5]的表示是错的。你搞错了一件事:
在C中 int a[5];声明一个长度为5的int类型数组。这里,a[5]只是一种声明的写法,这里声明的变量是a,不是a[5]。
所以*(a+1)合法而*(a+1)[5]非法。*(a+1)效果上等同于a[1].
追问
int n = *(a+n); 亲~~那这一句里面的a指的是首元素的地址的意思么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询