-----arr与&arr的区别
1.sizeof(数组名),这里的数组名是表示的是整个数组,计算的是整个数组的大小。
2.&数组名,这里的数组名是整个数组,取出的是整个数组。
3.除此之外的数组名是首元素的地址。
-----指针
1.指针是一个变量,用来存放地址的,地址是唯一标识一块内存空间的
2.指针的大小的是4/8,32位/64位
3.指针类型决定了指针访问内存的大小,指针类型决定了指针加减整数的步长
4.指针的运算(指针-指针,是计算元素的个数,两个指针必须指向同一空间)
#include<stdio.h>
int main(){
//arr与&arr的区别
int arr[] = {1,2,3};
int *parr = arr;
printf("%p \n",arr);
printf("%p \n",arr+1);
printf("%p \n",parr);
printf("%p \n",parr+1);
printf("%p \n",&arr); //&arr表示的是一整个的数组
printf("%p \n",&arr+1); //&arr+1表示的是加上一整个数组
//例题1
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a + 1; //指针ptr指向第5个的地址
printf("%d %d\n",*(a+1),*(ptr-1));
//这里的a表示的是首元素的地址,(a+1)是第二个元素
//ptr-1 表示指针向后退一步(4个字节)
return 0;
}