[英]Increment Of Pointer Of An Array
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int x = 100, i;
double D[x];
for(i=0; i < 100; i++)
scanf("%f", D++);
return 0;
}
代码有两个错误:
"%f"
而不是"%lf"
- 编译错误
D++
- 编译错误
但为什么D++
是一个错误? 因为D
是指向数组第一个元素的指针,而++
可以在数组上使用,就像指针一样?
D
不是指向数组第一个元素的指针。 D
是一个数组,在大多数情况下,数组“衰减”为指向其第一个元素的指针。
++
运算符不能用于数组,因为它会修改其操作数,并且数组不可修改(尽管它的元素是可修改的)。
您应该知道 D 不是指向数组第一个元素的指针,而是数组的名称,并且数组的名称具有特殊功能,因为它具有数组中第一个元素的地址,但不能按原样递增或递减不是真正的指针,但它只是数组中第一个元素的地址所以请记住(双 D[x];“数组名称”= D=&D[0])所以如果你想增加扫描数组用户元素有两种方法,首先使用数组
for(i=0; i < 100; i++)
scanf("%lu", D[i]);
其次通过使用指针
douple *ptr=&D[0];
for(i=0; i < 100; i++)
scanf("%lu", *(ptr+i);
由于您想按值填充数组元素
*(D+i)=*(ptr+i)=D[i]
同时我
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.