C语言学习之指针数组和数组指针
2026/8/4 2:45:38 网站建设 项目流程

今天学习了指针数组和数组指针,相较于之前学习过指针来讲,今天学习的算是之前从未接触过的新知识,算是知识上的盲区,指针变来变了去,对概念的理解也逐渐的模糊了,所以接下来的时间要好好去琢磨这一块的知识,争取能啃下来这块硬骨头

1.void指针

1.主要用于存放内存空间地址

2.函数传参,不同类型的指针可以通过转换为void*传参

将内存地址为0x12345678的空间赋值为0x11223344 *((int *)((void *)0x12345678) = 0x11223344;

2.二级指针

1.函数中想要修改函数外的指针变量的时候就要使用二级指针

2.指针数组传参要传二级指针和长度

#include<stdio.h> void fun(char **ptemp) { *ptemp = "hello"; return; } int main(void) { char *p = NULL; fun(&p); printf("%s\n",p); return 0; }

注:这段代码定义的函数想要修改函数外的指针变量就要使用二级指针,否则在定义函数形参的时候定义指针类型的形参就是值传递,形参是实参的副本,实参永远得不到改变

3.指针数组

1.指针数组是数组,数组指针是指针

int *a[5] //定义了一个int类型的指针数组,里面存放了五个指针,每个指针8个字节,这个数组占40个字节

2.字符串存储用字符型数组,操作字符串用指针

3.字符串数组存储用二维字符型数组,操作字符串数组用指针数组

4.数组指针

1.指针指向一个数组

int a[5] ={1,2,3,4,5}; int (*p)[5]; 定义了一个数组指针,占8个字节空间,指向20个字节的指针

注意:一维数组的数组名是指向数组第一个元素的指针常量

sizeof运算时不能理解为int*型

对一维数组&时,值不变,类型升级为指向整个数组,对数组指针取*运算时,值不变,类型降级为指向数组的第一个元素的指针

5.二维数组传参:

1.二维数组传数组名和第一维长度

int fun(int (*p)[3],int len)

可以理解二维数组就是多个一维数组组成

二维数组的数组名就是指向第一行的数组指针,对a取*就是指向第一行第一列的指针,再对a取*就是对第一行第一列的元素进行元素访问,其次就是p[i]等价于*(p+i)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询