当前位置: 首页 > ds >正文

嵌入式系统学习Day14(C语言中指针的拓展)

一.二级指针

如果要保存的是一个一级指针变量所在空间的的地址那就可以写为:char * *p;

int  a = 10; //整型变量 对应要开要给4字节空间  有空间 就有地址 
int * p = &a; //p也是变量(一级指针变量) 是变量 就有空间 有空间 就有地址
int* * q = &p; //q也是变量(二级指针变量) 是变量 就有空间 有空间 就有地址
int** *r = &q; //三级指针 

  r   //r中放的是 q的地址 
*r   //就相当于是q  q中放的就是 p的地址 
**r   //*q 相当于p  p中放的是 a 的地址
***r  //*p 相当于a  就是a中的值 10

二.堆区空间

 特点: 大 
手动申请,手动释放 

   函数 
void *malloc(size_t size);
功能: 
堆区申请空间 
参数:
@size 表示申请的大小 
返回值:
成功 返回申请到的堆区空间的地址 
失败  NULL
void free(void *ptr);
功能:
释放堆区的空间 
参数:
@pstr 之前用malloc申请到的堆区空间的地址 

      
NULL    //空指针 
void *  //空类型指针
//万能指针 
//  表示可以接收任意类型的指针 
注意:
如果通过 void *类型的地址 进行解引用操作 
会报错,
如果要用,必须转换为 具体的类型
//int*      

    *p   //解引用 

eg:
int a[10];
要求,定义一个数组,放在堆上 
输入10个值,输出 

三.函数指针

int add(int a,int b)
{
return a + b;
}
add //函数名  --- 代表的是函数的入口地址 
//函数名是标识符 
//函数也是一种类型 
//去掉标识符 --- 剩下就是标识符对应的数据类型 
//int (int a,int b) --- 函数类型 --- 表示是一类函数 ,返回值为int型 ,带有两个int型形参这么一类函数

void *p = add;

int (*p) (int,int)  = add;  //定义了一个指向 函数 的 指针 

函数回调


main函数的参数:

const char *s[]  = {"hello","world","china"};


const char * argv[] //数组 --指针数组 ---const char * 
const char ** arg   //编译器最终理解的形式 


int main(int argc,const char *argv[])

argc  命令行参数的个数 
argv  表示命令参数对应字符串的 一个指针数组 

四.指针函数

//指针(的)函数  --- 本质 ---函数---只是 返回值是指针类型而已 
表示 返回值类型 为指针类型的函数 

char * strcpy
char * strcat 


注意:
1.函数可以返回地址 
但是,不能是局部变量(auto--栈上)的地址,auto的局部变量的生命周期 随着函数调用开始存在,函数调用结束销毁

2.局部变量想要返回值地址 
static 

http://www.xdnf.cn/news/17376.html

相关文章:

  • 音乐创作新潮流!豆包 + 蘑兔 A
  • macOS 彻底卸载 Python 的完整指南
  • RWA项目实战指南:流程设计到技术落地的完整路径
  • 硬件学习笔记--74 电泳与电镀的对比介绍
  • 「iOS」————持久化
  • 安卓Handler和Looper的学习记录
  • 13-netty基础-手写rpc-消费方生成代理-05
  • 30-Hive SQL-DML-Load加载数据
  • 上位机知识篇---蜂窝通信
  • 基于MATLAB实现支持向量机(SVM)分类
  • 目标检测数据集 - 高架视角道路车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 医疗人效管理新标杆:盖雅工场如何赋能健康服务企业提质增效
  • 从“炼金术”到“工程学”:深度学习十年范式变迁与未来十年路线图
  • 板块三章节4——iSCSI 服务器(待更新)
  • vscode中创建python虚拟环境的方法
  • Rust爬虫与代理池技术解析
  • UDP网络编程chat
  • 腾讯云EdgeOne产品深度分析报告
  • Java 大视界 -- Java 大数据在智能教育在线课程互动优化与学习体验提升中的应用(386)
  • 力扣 hot100 Day67
  • 玩转 InfluxDB 3:用 HTTP API 快速创建高效数据表
  • Java高频方法总结
  • 数据结构(四)内核链表、栈与队列
  • 嵌入式 - 数据结构:栈和队列
  • 大数据之Flume
  • 8.6学习总结
  • Qt菜单栏与工具栏实战
  • MySQL的约束条件:
  • 人工智能——深度学习——认识Tensor
  • 12. SELinux 加固 Linux 安全