C 在下面的代码块中指针是如何工作的?
我试图理解指针是如何工作的,我被这段代码卡住了。有人能解释一下表达式“*(a+tally)”在这段代码中指向哪里吗?背后的逻辑是什么C 在下面的代码块中指针是如何工作的?,c,pointers,C,Pointers,我试图理解指针是如何工作的,我被这段代码卡住了。有人能解释一下表达式“*(a+tally)”在这段代码中指向哪里吗?背后的逻辑是什么 #include <stdio.h> int main() { int a[5]={1,2,3,4,5},b[5]={10,20,30,40,50},tally; for(tally=0;tally< 5;++tally) { *(a+tally)= *(tally+a) + *(b+tally
#include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5},b[5]={10,20,30,40,50},tally;
for(tally=0;tally< 5;++tally)
{
*(a+tally)= *(tally+a) + *(b+tally);
}
for(tally=0;tally< 5;tally++)
{
printf("%d" *(a+tally));
}
return 0;
}
#包括
int main()
{
INTA[5]={1,2,3,4,5},b[5]={10,20,30,40,50},tally;
用于(计数=0;计数<5;++计数)
{
*(a+理货)=*(理货+a)+*(b+理货);
}
用于(计数=0;计数<5;计数++)
{
printf(“%d”*(a+tally));
}
返回0;
}
例如,此表达式
*(a+tally)
a[tally]
a + tally
tally + a
与表达式相同
*(a+tally)
a[tally]
a + tally
tally + a
并在索引tally
处生成数组的(左值)元素
因此,这个循环
for(tally=0;tally< 5;++tally)
{
*(a+tally)= *(tally+a) + *(b+tally);
}
或等效表达式
*(a+tally)
a[tally]
a + tally
tally + a
指向数组a
的元素,其索引等于tally
的值
请注意,由于表达式
a[tally]
的计算方式类似于*(a+tally)
或作为*(tally+a)
(由于加法的交换性质),因此表达式a[tally]
也可以像tally[a]
一样重写,这更容易阅读吗<代码>a[tally]+=b[tally]代码>相关:表达式*(a+tally)
不指向任何内容。表达式a+tally
是a
元素的地址,*(a+tally)
是该地址处的对象<代码>a有5个元素a+0
是第一个元素的地址,a+1
是下一个元素的地址,以此类推。a+(i-1)
是第i个元素的地址。所以,a+4
是第五个元素的地址。tally[a]
:我以前从未见过这个,太奇怪了。。无论如何,谢谢你的信息!