繁体   English   中英

数组指针的增量

[英]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;
}

代码有两个错误:

  1. "%f"而不是"%lf" - 编译错误

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM