C一些指针问题
有人能解释这些答案吗?我能理解,4.但其余的我不能C一些指针问题,c,pointers,C,Pointers,有人能解释这些答案吗?我能理解,4.但其余的我不能 int a[ ] ={2,4,3,1,10,5,9,6,8,7}; int *pa = &a[4],*pb = &a[1]; What is the value of the below? 1.*(a + 3) 2.*pb-*pa 3.pb[3] 4.*pa + 5 5.*(pa-2) 6.pa[4] Answer: 1.*(a + 3)=1 2.*pb-*pa=-6 3.pb[3]=10 4.*pa + 5=15 5
int a[ ] ={2,4,3,1,10,5,9,6,8,7};
int *pa = &a[4],*pb = &a[1];
What is the value of the below?
1.*(a + 3)
2.*pb-*pa
3.pb[3]
4.*pa + 5
5.*(pa-2)
6.pa[4]
Answer:
1.*(a + 3)=1
2.*pb-*pa=-6
3.pb[3]=10
4.*pa + 5=15
5.*(pa-2)=3
6.pa[4]=8
x[y]
相当于y[x]
,相当于*(x+y)
或*(y+x)
。所以*(a+3)
相当于a[3]
或3[a]
你认为答案应该是什么,为什么?我知道我应该读到它,但现在在1小时内我必须参加一次考试,我发现这个问题曾经是教授提出的,我需要理解它。他从来没有提到过*(a+3)语法。另外,我不能理解pb[number],因为它应该是指针而不是数组……你必须在这里问一个实际问题。如果你对这个问题有疑问,你必须告诉我们它是什么。你应该学习更多,如果你不想学习足够多的知识来实际工作,为什么你希望人们帮助你。我认为这个问题不应该关闭,这是一个真正的问题,即使此人完全不了解ci中最基本的概念,但仍然没有获得pa[4]和*(pa-2)pa
是指向a[4]
的指针,因此pa[4]
与a[4+4]
或a[8]
相同pa-2
是指向a[2]
的指针,因此*(pa-2)
与a[4-2]
或a[2]
相同。这个练习基本上是关于使用指针、内存地址和获取存储在这些地址中的值的。@DavidSchwartz注意,x[y]
只相当于y[x]
如果sizeof(*x)==sizeof(*y)==1
。无论是在操作数组还是在用指针进行算术运算时,偏移量总是乘以类型大小。@Havenard:如果你在做x[y]
和y[x]
,这些家伙中必须有一个是数字,它们不能都是指针。