C语言二级指针和void *应用
1、二级指针
指向指针的指针 --- 二级指针
// 二级指针一般用来改变一级指针的指向。
int a = 30;int b = 50;int * p = &a;// 定义一个指针指向p// 指针指向对象类型: int *int * * q; // int **q;q = &p;// 改变一级指针的指向*q = &b;printf(“%p\n”,p); // &bprintf(“%d\n”,*p); // b
场景:
在函数内部需要 改变外部指针的指向。
#include<stdio.h>int b = 50;函数(int * *q){// 修改主函数中p指针的指向*q = &b;}int main(){int a = 30;int * p = &a;函数(&p);printf("%p\n",p);printf("%d\n",*p);return 0;}
2、void * - 万能指针
void * 数据类型;
void *指针可以接受任意类型的地址,
void *型的地址也可以被任意类型的指针接受
void * 用作函数返回值类型或者参数。
返回值是void *: void *malloc( size_t size );
形参类型是void *: void *memset( void *buffer, int ch, size_t count );
// 按照字节 将空间的数据设置成某一个字符 ch
举例:
int a[5] = {2,5,6,7,10};// 需求: 将数组里面数据清0memset(a,0,sizeof(a));char str[] = “hello”;memset(str,’\0’,sizeof(str));