在C语言中,数组a[5],数组名a可以a++吗
int main(void)
{
int array[5];
int *p,i;
printf("请输入是五个数:\n");
for(i=0;i<5;i++)
scanf("%d",&array[i]);
printf("\n");
printf("输出五个数:\n");
for(i=0;i<5;i++)
printf("%d\n",*(array++));//"array++"这样的写法正确吗
} 展开
不能。因为变量指针可以递增,而数组不能递增,数组可以看成一个指针常量。代码修改:
#include<stdio.h>
int main(void)
{
int array[5]={2,4,5,23,5};
int *p,i;
p=array;
printf("请输入是五个数:\n");
for(i=0;i<5;i++)
scanf("%d",&array[i]);
printf("\n");
printf("输出五个数:\n");
//for(i=0;i<5;i++)
printf("%d\n",*(p++));
}
扩展资料:
指针运算
1、指针变量加/减一个整数
例如:p++,p--,p+i等。
C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。这样就保证了p+i指向p下面的第i个元素。
2、指针变量赋值
C语言与C++语言规定,可以将一个变量或一个函数的入口地址赋值给相应的指针变量。
例如(假设p是相应的指针):
p=&a;
p=max;(max为已经定义的函数)
3、指针变量相减
如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数。
注意,指针变量相加无实际意义。
4、指针变量比较
如果两个指针变量指向同一个数组的元素,则可以进行比较。指向前面元素的指针变量小于指向后面元素的指针变量。
参考资料:
所以当a为数组时, a=任意表达式 这样的计算都是非法的。
而a++,等效于a=a+1, 所以这种表达式一样是非法的,编译的时候会报错。
是不是说自增运算符的操作对象是变量,数组名是指针常量。可以这么理解吗
大致上可以,但是这种说法不严谨,比如const修饰的变量,就不是可修改的
2012-07-18
我加有for循环了 ,每循环一次,array都加一
不好意思,回答错误。。。array++本身就是错误的。因为数组名是个指针常量。不能做自增或者自减的操作。