【发布时间】:2018-03-29 20:35:43
【问题描述】:
本周我的C语言老师解释说我们可以使用*(array + i)而不是array [i],他还提到了使用这种“新方法”的优点。到目前为止一切都还好,然后他给了我们一些练习要做,其中一个我正在尝试与 scanf 一起使用这种新方法。
我知道该怎么做:
printf("%i", *(array + i));
我的疑问是,我怎样才能在 scanf 中使用 *(array + i),否则不可能?
scanf("%i", *(array + i));
for(i = 0; i < size; i++)
{
printf("Insert number: %i", i+1);
scanf("%i", *(array + i); // it's not working.
}
【问题讨论】:
-
您知道 scanf 需要一个指针指向您现在提供取消引用指针的位置,不是吗?
-
取消引用
-
除了知道您当前问题的答案之外,请确保您了解为什么
*(array+i)和array[i]是一回事。他们都在执行pointer arithmetic,array[i]语法只是包含了取消引用。 -
scanf("%i", *(array + i);甚至不会编译给定不平衡的()。发布真实代码是提出问题的良好第一步。 -
你试过了吗?发生了什么? :)