尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

嵌入式从0到精通——C语言指针(三)

嵌入式从0到精通——C语言指针(三) 1.指针数组指针数组本质是数组该数组中保存的是指针。语法int a[5];int *a[5];int *数组比重保存的数据类型该数组中保存的元素是int *指针[5]该数组中可以保存5个指针int *定义了一个可以保存5个整型指针的数组整体占40个字节char *p[5];1.指针数组的定义指针类型 数组名[元素个数]2.指针数组的初始化char *p[5] NULL;char *p[5] {NULL};将5个char类型指针初始化成NULL;char *p hello;char *p {hello,world,how,are,you};p[0] char * p[0]指针保存字符串常量hello的首地址p[1] char * p[1]指针保存字符串常量world的首地址p[2] char * p[2]指针保存字符串常量how的首地址p[3] char * p[3]指针保存字符串常量are的首地址p[5] char * p[40]指针保存字符串常量you的首地址char *p1 hello;char *p2 world;char *p3 you;char *p[3]{p1,p2,p3};3.指针数组和二维字符型数组的区别char str[3][100] {hello,world,how,are,you};sizeof(str) 300字节char *ptsr[3] {hello,world,how,are,you};sizeof(pstr) 3字节 *sizeof(char *) 24字节区别1.二维字符型数组中保存的是多个字符串本身指针数组中保存的是多个字符串的首地址2.要保存多个字符串用二维字符型数组要操作多个字符串用指针数组2.二级指针二级指针本质还是指针是一个指针变量的地址。int **指针名称———保存整型指针的指针char **指针名称———保存字符型指针的指针C语言中有两个二级指针的使用场景1.想要在被调函数中修改主调函数中的指针变量实参需要传递该指针变量的地址形参用二级指针接收。2.指针数组的数组名是一个二级指针实参传递指针数组数组名时形参用二级指针接收。char *str[3]{hello,world,how};str[0] ———char * ———保存了字符串常量hello 的地址str———str[0]——char ** 二级指针值传递无法在被调中修改主调中的变量只能使用该变量指针传参可以在被调中修改主调中定义的变量也可以使用该变量值传递恰好传递的值是一个指针变量无法在被调用修改主调中定义的指针变量可以使用该指针变量。指针传参可以在被调函数中可以修改主调函数中定义的指针变量也可以使用该变量3.指针函数指针函数本质是函数具有指针类型返回值的函数称为指针函数。指针函数能返回什么指针1.局部变量的地址不能被返回变量数组。2.具有静态生命周期的变量的地址可以被返回。1.satatic修饰的静态变量的地址。2.全局变量。3.可以返回字符串常量的地址。4.可以返回通过参数传递给该函数的地址。5.可以返回堆区申请且没有被释放的空间地址。4.函数指针函数指针本质是指针指向函数的指针。函数函数的函数名为函数的入口地址。语法1.定义函数指针函数声明int fun(int ,int );int *pfun(int , int);函数指针int (*pfun)(int , int );定义了一个函数指针变量该指针变量在内存占8字节该函数指针可以指向一个具有int类型返回值两个int类型参数的函数。char *(*pfun)(char *);总结返回值类型 (*函数名)(形参表);2.函数指针的初始化int (*pfun)(int , int )NULL;3.函数指针赋值int add(int num1,int num2){}int (*pfun)(int , int )NULL;pfunadd;4.函数指针调用函数函数名(实参表);函数指针名称(实参表);5.函数指针的应用回调函数将函数作为某个函数的参数传递传递的函数称为回调函数主要为了降低代码的耦合度(关联少)减少重复代码
返回列表