C指针 指针和数组 二维数组的指针 指针应用

时间:2023-03-09 18:28:26
C指针   指针和数组    二维数组的指针  指针应用

直接到变量名标识的存储单元中读取变量的值——直接寻址

通过其他变量间接找到变量的地址读取变量的值——间接寻址

指针变量存放地址

C指针   指针和数组    二维数组的指针  指针应用

显示变量的地址

C指针   指针和数组    二维数组的指针  指针应用

指针变量使用前必须初始化,若不知指向哪,可先指向NULL。

指针的解引用——通过指针访问指针指向的值

C指针   指针和数组    二维数组的指针  指针应用

此*非彼*

int *p=&a;    *作为指针的说明符定义变量

*p=1;           *间接运算符,用于访问p指向的变量值

pa是指向a的指针变量,pa存放a的地址

只要pa指向a,*pa就是a的别名

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

利用指针实现两数交换

C指针   指针和数组    二维数组的指针  指针应用C指针   指针和数组    二维数组的指针  指针应用

a和b的地址值分别传给形参x和形参y,执行完语句后形参x指向实参b,形参y指向实参a,形参互换了,但实参并没有互换。

 函数指针

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

result=(*f)(a,b);   已经有了指向的函数

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用C指针   指针和数组    二维数组的指针  指针应用

指针的算术运算

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

 ++(*p)   先读出p所指向的存储单元的数据,然后数据执行+1操作,输出6,不改变指向

(*p)++ 先读出p所指向的数据,输出5,然后数据执行+1操作,不改变指向

*p++  单目运算符优先级相同,右结合 ,相当于*(p++) 先使用表达式的值(先使用p取出p指向的存储单元的数),后对p执行+1操作,将p指向下个单元(改变指向)   

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

重要:二维数组的指针

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用其实,在二维数组中,*(a+i)数组元素并不存在,又是另外一个数组的数组名,也是一个地址值,表示第i行第0列的地址

C指针   指针和数组    二维数组的指针  指针应用

*p两边的圆括号不能省

int (*p)[3]    

指针变量p的类型是int[3]型

a  第0行int[3]类型的元素

用二维数组名对其初始化,二维数组的数组名代表了二维数组的行地址

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

第二种定义方式:

C指针   指针和数组    二维数组的指针  指针应用

此处的*a也是二维的定义 *(a+0)+0

C指针   指针和数组    二维数组的指针  指针应用

C指针   指针和数组    二维数组的指针  指针应用

表示a[i][j]元素前有i行j列

C指针   指针和数组    二维数组的指针  指针应用

注意区分行指针与列指针

行指针:p首先指向第0行,然后p+i定位到第i行,然后p+i进行解引用(*(p+i))把行地址转化为列地址,在得到第i行第0列地址后在加j得到第i行第j列地址,在进行解引用得到a[i][j]

列指针:p直接指向了第0行第0列,找出a[i][j]相对于a[0][0]的偏移量,i*n+j

二维数组的应用

C指针   指针和数组    二维数组的指针  指针应用

空间利用率低,最好引用参差不齐的数组类型

C指针   指针和数组    二维数组的指针  指针应用

country数组中的每个元素都是一个字符指针,字符数组指针只是保存了这些字符串的首地址

C指针   指针和数组    二维数组的指针  指针应用

只要用country[i]给出第i个字符串的首地址,即可给出第i个字符串。

访问指针数组指向的字符串和访问二维数组中的字符串方式相同

C指针   指针和数组    二维数组的指针  指针应用

字符串的排序

C指针   指针和数组    二维数组的指针  指针应用

物理排序,改变了字符串实际保存的物理位置。

C指针   指针和数组    二维数组的指针  指针应用

交换的是第i个字符串和第j个字符串的首地址