Pointers 为什么指针给出两个不同的地址?
我有这个节目。我有些怀疑。您可以在编译器中运行它。我正在linux中使用gcc编译器Pointers 为什么指针给出两个不同的地址?,pointers,multidimensional-array,pointer-address,array-address,Pointers,Multidimensional Array,Pointer Address,Array Address,我有这个节目。我有些怀疑。您可以在编译器中运行它。我正在linux中使用gcc编译器 #include<stdio.h> int main() { int j=4,*add; int i=2; int a[i][j]; for (i=0;i<=1;i++) { for(j=0;j<=3;j++) { scanf("%d",&a[i][j],"%d",&a[i][
#include<stdio.h>
int main()
{
int j=4,*add;
int i=2;
int a[i][j];
for (i=0;i<=1;i++)
{
for(j=0;j<=3;j++)
{
scanf("%d",&a[i][j],"%d",&a[i][j]);
}
}
for(i=0;i<=1;i++)
{
for (j=0;j<=3;j++)
{
add=&(a[i][j]);
printf("\nSize of %d is %d and address is: %u that should be equal to: %d",a[i][j],sizeof(a[i][j]),&(a[i][j]),add);//Address are not equal while add is having the value of &(a[i][j])
printf("\nSize of %d is %d and value is: %d that should be equal to: %d",a[i][j],sizeof(a[i][j]),*(&(a[i][j])),*add);//Here value at both addresses are same
}
}
printf("\n initial address of the array is: %u that should be equal to address given by &a[0][0]",&a); //And it's equal
return 0;
}
#包括
int main()
{
int j=4,*加上;
int i=2;
INTA[i][j];
对于(i=0;i它们是相同的地址。这可能是使您认为它们不同的符号。使用%p打印指针或同时使用%u。这两个%d
或%u
都不是指针。使用%p
(并强制转换为void*
)出于这个目的。还有一个是%d
,另一个是%u
。相同的地址,但不同的表示形式。我喜欢运算符的地址后跟一个解引用。同样,还有scanf(“%d”、&a[I][j]、“%d”、&a[I][j]);
?非常感谢特里斯坦。)你是对的。我也用%u做加法。地址对两者都是相等的。但现在的问题是为什么%d给出了-ve地址。我知道它用于整数变量而不是整数指针。再次感谢你。:)非常感谢你,我用%u做加法,地址对两者都是相等的。用%u和%p做不同的事情。两者都给出了指针的地址。但其中一个以整数形式给出地址,另一个在0axtu23i90中给出类似的内容。因此,使用%u我们可以添加/减去地址。