C语言学的指针是一个非常难的知识点,当它和数组结合起来是更是难上加难。所以这里有一些关于指针和数组相关的题目来帮我们更好的理解指针。
题目1.
#include <stdio.h>
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int*)(&a + 1);
printf("%d,%d", *(a + 1), *(ptr - 1));
return 0;
}
如上题,我们可以将数组“a[5]”在内存中的存储以图的形式画出来方便我们理解:
那么我们现在来分析这段代码:
“int *ptr = (int*)(&a + 1);”:
“&a”中的“a”我们知道它此时与“&”结合,代表的整个数组,所以“&a”就是整个数组的地址。此时“(&a + 1)”就是给整个数组的地址加一,此时指针指向