我可以在scanf中使用指针来获取数组中的输入吗?

时间:2013-08-25 18:54:42

标签: c arrays pointers scanf

我想在中执行此操作:

scanf("%d",a+i);

其中a是一个大小为10的数组。并且i是循环计数器。这可能吗?

3 个答案:

答案 0 :(得分:6)

绝对:如果aint*或数组int a[10]i介于0和9之间,则此表达式有效。

a+i表达式是&a[i]的指针算术等价物,它也是传递给scanf的有效表达式。

答案 1 :(得分:0)

是的,您可以使用+ i而不是& a [i] ,,,以下代码要求您输入10个数字并将它们保存在数组中,,,然后在其中显示数字。

检查此代码:

#include <stdio.h>

int main (void)
{
    int a[10], i, j = 0;

    for(i = 0; i < 10; ++i ){

    printf("Element no %d = ",i);

    scanf("%d",a+i);}

    printf("Elements in your array are: ");

    for(j = 0; j < 10; j++)

    printf("%d  ",a[j]);

return 0;
}

我希望这段代码可以帮到你!!

答案 2 :(得分:-2)

试试这个解决方案:

#include <stdio.h>

int main (void)
{
  int *p, i, j = 0, n;
  printf("enter the value of n ");
  scanf("%d",&n);
  for(i = 0; i < n; ++i ){
    scanf("%d",p+i);}

  printf("Elements in your array are: ");

  for(j = 0; j < 10; j++)
    printf("%d  ",*(p+i));
  return 0;
}