指针、函数指针、typedef、链表

本文详细介绍了C语言中动态内存分配的过程,包括指针本身的类型和指针指向数据的类型。通过例子展示了数组指针和指针数组的区别,并解释了函数指针的使用。同时,提到了typedef在定义函数别名中的作用,以及如何通过函数别名调用不同功能的函数。此外,还简单提及了链表的基本概念,强调学习链表时理解数据结构和指针转换的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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是指针指向动态开辟的空间
学习链表要多画图理解

有不足的地方,希望大家可以一起学习和讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值