C语言数组赋值运算解析:理解数组名与指针常量的区别
C语言不允许用赋值运算符对数组整体进行赋值。这句话怎么理解呀,是一个判断题。
正确的数组是多个元素的集合,数组名是记录数组首地址的指针常量,在赋值时,C编译器会认为需要修改数组名来记录地址。值,这是不允许的。
在C语言中,数组名可以做加法和减法吗?
在C语言中,数组名是一个不可变的指针常量,不能对其进行加减赋值操作。
在C语言中,数组名是一个变量标识符,代表数组的首地址,符合标识符书写约定。
不能对其进行加法、减法和赋值运算。
整个数组是从第一个地址开始的连续内存单元。
如果有一个字符串charc[10],设数组c的首地址为2000,也就是说单元c[0]的地址为2000。
那么数组c的名字就代表了这个首地址。
扩展信息:
组元素是组成组的基本单位。
数组元素也是变量,由数组名称后跟下标来标识。
下标表示数组中元素的序号。
数组元素的一般形式为:数组名[签名]其中签名只能是整型常量或整型表达式。
组名的书写规则必须与标识符的书写规则一致。
数组名不能与其他变量名相同。
如果是小数,C编译器会自动四舍五入。
例如a[5]、a[i+j]、a[i++]都是合法集合的元素。
数组元素通常也称为签名变量。
在使用有符号变量之前必须定义数组。
在C语言中,下标变量一次只能使用一个,并且不能一次引用整个数组。
在C语言中,数组a[5],数组名a可以a++吗
没有。
由于变量指针可以递增,但数组不能递增,因此可以将数组视为指针常量。
代码修改:
#include
intmain(void)
intarray[5]={2,4,5,23,5};
int*p,i;
p=array;
printf("请输入五位数字:\n");
for(i=0;i<5>
scanf("%d",&array[i]);
printf("\n");
printf("输出五个数字:\n");
//for(i=0;i<5>
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.比较指针变量
如果两个指针变量指向同一个数组中的元素,则可以比较它们。
指向前一个元素的指针变量小于指向后一个元素的指针变量。
参考资料:
百度百科-指针运算