【C】零基础教我学会c语言(十二) 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、void指针二.二级指针三.指针数组四.数组指针五.二维数组传参1.二维整型数组的传参总结前言难死我了提示以下是本篇文章正文内容下面案例可供参考一、void指针主要用于存放内存空间地址也用于函数传参不同类型的指针可以通过转换为 void* 传参void* 就是设置一个没有类型的地址里面可以放任何类型的数据//将内存地址为0x12345678的空间赋值为0x11223344*((int*)((void*)0x12345678)0x11223344;二.二级指针函数体内想修改函数体外指针变量值的时候需要传递指针变量的地址即二级指针C语言指针数组传参需要传二级指针和长度inta100;int*pNULL;int**qNULL;pa;qp;printf(a:%p\n,a);//a的地址printf(p:%p\n,p);//存放p这个指针的地址printf(q:%p\n,q);//存放q这个指针的地址printf(\n);printf(q %p\n,q);//q放的是p的地址printf(p %p\n,p);//p放的是a的地址printf(a %d\n,a);//a的值即100printf(\n);printf(*q %p\n,*q);//取q的值即为p的地址printf(*p %d\n,*p);//取p的值即a的地址printf(\n);printf(**q %d\n,**q);//取*q的值即p所存的地址的值即为a的值100三.指针数组本质上为一个数组里面的数据类型为指针定义int *a[5]定义数组a里有5个元素占40个字节空间每个元素都是int *型 C语言中字符串存储用字符型数组操作字符串用指针 字符串数组的存储用二维字符型数组操作字符串用指针数组四.数组指针本质上是指针指向一个数组定义nt a[5] {1, 2, 3, 4, 5}; int (*p)[5];1.定义数组指针变量p占8个字节空间指向20个字节的指针2.一维数组的数组名a是指向数组第一个元素的指针常量a可以理解为int *型除以下2种情况1sizeof运算时对一维数组数组名时值不变类型为指向整个数组的指针地址就应该是元素总数*步长a数组第一个元素的首地址a数组的首地址2数组指针取*值不变类型为指向数组第一个元素的指针地址都是指地址哦五.二维数组传参1.二维整型数组的传参1传数组名和第一维长度行int fun(int (*parray)[3], int len);这里的【3】指3列哦2在函数里的用法和在主函数里数组的用法是一模一样的不用变换二维数组和指针的关系inta[2][3]{1,2,3,4,5,6};int*pNULL;int(*q)[3]NULL;pa[0][0];pa[0];p*a;qa;a:指向数组一行元素的数组指针 a[0]:指向第一行第一个元素的指针 a[1]:指向第二行第一个元素的指针 访问第m行第n列元素的方式 a[m][n]*(a[m]n)//加步长取值*(*(am)n)//a加步长一次加一列先到m再加步长取值*(pm*Nn)//p就是a0a0一次加一个先到m行再加步长取值*(*(qm)n)//q是a一次加一列*(q[m]n)//qm就是第m行q[m][n]//与a【m】【n】等价总结