指针

变量访问的两种方式(取值):

  1.通过变量名

  2.通过变量的地址(指针)

int *p;//指针变量p指向一个int类型的地址

 

指针变量和数组的区别(int *p、int arr[3]):

  1. 指针变量指向的地址是可以变的(即p可以指向不同的整型地址),所以p++是可以的;

      而数组名是一个常量(即在定义数组的时候它的地址就固定了),所以arr++不行(是给arr重新赋值)。

  2. 所占的空间大小不同(sizeof())

     sizeof(p) = 8;表示一个指针变量占8个字节,即每种类型的地址都占8字节(类比一个整型变量占4个字节)

     sizeof(arr) = 12;表示一个数组所占的空间大小

 

二维数组(一维数组的每个元素又是一个数组):

  int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}}

  可以看成有3个一维数组a[0]、a[1]、a[2],这三个一维数组中又指向包含 4个元素的一维数组

  即a是二维数组的首地址,a+1表示a[1],a+2表示a[2];a[0]+1表示a[0][1]这个地址。

  int a[3] [4]= {p1,p2,p3} ;  p1 = {1,3,5,7}。所以a表示的是首元素p1的地址,a+1就是p2的地址;同理p1是首元素1的地址,p1+1是3的地址

二维数组中存放的是一位数组,所以*a表示对二维数组取值,即a[0],是一维数组的首地址;*(a+1),即a[1];*a+1即等于a[0]+1

posted @ 2023-03-31 22:40  踏浪而来的人  阅读(156)  评论(0编辑  收藏  举报