c语言动态开辟空间整个流程中使用到两种类型
一个是指针本身的类型
一个是指针指向数据的类型的类型
举例:
int* array=(int*)malloc(sizof(int));
指针本身的类型:int*
指针指向数据的类型的类型: int
一个指针,如果变量名先和数组结合就是数组指针
int* a[3];
一个指针,如果变量名先和指针结合就是指针数组
int(*p)[3]
//数组指针
int* a[3];
for(int i=0;i<3;i++)
a[i]=(int*)malloc(sizeof(int));
//指针数组
去掉*号和变量名,就是指针指向数据类型的类型
int(*p)[3] = (int(*)[3])malloc(sizeof(int[3]));
函数指针
用*指针名替换函数名,剩下的照抄,就是函数指针
例如:
void max (int a,int b)
void*(int a,int b)
typedef是取别名
typedef int (*FUNC)(int a,int b)//给函数取别名,别名就是FUNC
给函数取别名还可以起到统一接口的作用,只要函数参数类型和位置一致的函数,就可以通过传函数名
实现调用同样的函数,参数不一样,执行不同的操作,具体可以看接下来的例子.
通过函数别名调用函数
void abc(FUNC fun,int b,int c)
{
}
//求最大值
int max(int a,int b){}
//求最小值
int min(int a,int b){}
举例:
#include<iostream>
int main()
{
abc(max,10,20);
abc(min,20,10);
return 0;
}
程序员通用的学习内容,部分语言 : 网络 数据库 多线程
链表分有头节点链表和无头节点链表,区别在于第一个节点数据域是否有数据
链表就是一个节点链接一个节点,关键在于节点
节点的关键在于数据结构和如何把指针转换成变量
两种方式,1指针直接指向变量的地址 2是指针指向动态开辟的空间
学习链表要多画图理解
有不足的地方,希望大家可以一起学习和讨论。
|