Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C一些指针问题_C_Pointers - Fatal编程技术网

C一些指针问题

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

有人能解释这些答案吗?我能理解,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.*(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]
,这些家伙中必须有一个是数字,它们不能都是指针。