gpt4 book ai didi

c - scanf ("%d",((*a+i)+j)) 和 scanf ("%d",&a[i][j]) 的区别

转载 作者:行者123 更新时间:2023-12-01 08:57:04 25 4
gpt4 key购买 nike

根据我的理解 a[i][j] 可以读成 *(*a+i)+j ,但我用其中两种符号扫描 scan ,我看到了差异,下面是代码片段,

for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
// scanf("%d",((*a+i)+j));
scanf("%d",&a[i][j]);
printf("Address of &a[%d][%d]=%ld , Adress of ((*a+%d)+%d)=%ld\n",i,j,&a[i][j] ,i,j, ((*a+i)+j));
}
}

我低于输出,

1
Address of &a[0][0]=140736658532752 , Adress of ((*a+0)+0)=140736658532752
2
Address of &a[0][1]=140736658532756 , Adress of ((*a+0)+1)=140736658532756
3
Address of &a[0][2]=140736658532760 , Adress of ((*a+0)+2)=140736658532760
4
Address of &a[1][0]=140736658532772 , Adress of ((*a+1)+0)=140736658532756
5
Address of &a[1][1]=140736658532776 , Adress of ((*a+1)+1)=140736658532760
6
Address of &a[1][2]=140736658532780 , Adress of ((*a+1)+2)=140736658532764
7
Address of &a[2][0]=140736658532792 , Adress of ((*a+2)+0)=140736658532760
8
Address of &a[2][1]=140736658532796 , Adress of ((*a+2)+1)=140736658532764
9
Address of &a[2][2]=140736658532800 , Adress of ((*a+2)+2)=140736658532768

谁能解释一下两种情况下的内存表示....

最佳答案

你说,

As per as my understanding a[i][j] can be read like *(*a+1)+j , but i scan scan with two of these notation , i see differences , below is the code snippet,

我猜你打错了。你的意思是 *(*a+i)+j 而不是 *(*a+1)+j

然而,这也不是真的。

a[i] 等同于 *(a+i),而不是 (*a+i)。由于运算符优先级,*a+i 等同于 (*a)+i,而不是 *(a+i)

同样,a[i][j]等价于*(*(a+i)+j),而不是*(*a+ 1)+j.

关于c - scanf ("%d",((*a+i)+j)) 和 scanf ("%d",&a[i][j]) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com