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

深圳策划公司网站建设大型网站制作品牌

深圳策划公司网站,建设大型网站制作品牌,电商平台怎么推广比较好,微信公众号如何分享wordpress文章目录 1. 指向指针的指针(int pp)1.1 基本概念1.2 内存模型1.3 实战应用 2. 函数指针2.1 什么是函数指针?2.2 声明与使用2.3 高级应用 3. 结构体指针3.1 基本用法3.2 动态内存分配3.3 链表实现 4. 综合实战5. 避坑指南 1. 指向指针的指针&…

文章目录

  • 1. 指向指针的指针(int pp)
    • 1.1 基本概念
    • 1.2 内存模型
    • 1.3 实战应用
  • 2. 函数指针
    • 2.1 什么是函数指针?
    • 2.2 声明与使用
    • 2.3 高级应用
  • 3. 结构体指针
    • 3.1 基本用法
    • 3.2 动态内存分配
    • 3.3 链表实现
  • 4. 综合实战
  • 5. 避坑指南

1. 指向指针的指针(int pp)

1.1 基本概念

  • 指向指针的指针(多级指针)是指存储指针变量地址的指针,常用于动态多维数组、链式数据结构等场景。
int a = 10;
int *p = &a;      // p 存储 a 的地址
int **pp = &p;    // pp 存储 p 的地址

1.2 内存模型

a = 10       (地址: 0x1000)
p = 0x1000   (地址: 0x2000)
pp = 0x2000  (地址: 0x3000)

1.3 实战应用

  • 动态二维数组
int rows = 3, cols = 4;
int **matrix = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {matrix[i] = (int *)malloc(cols * sizeof(int));
}
  • // 使用 matrix[i][j]
  • // 释放内存略
  • 修改指针变量
void changePointer(int **pp) {int b = 20;*pp = &b;  // 修改外部指针的指向
}
int main() {int a = 10;int *p = &a;changePointer(&p);  // p 现在指向 breturn 0;
}

2. 函数指针

2.1 什么是函数指针?

函数指针是指向函数入口地址的指针,可用于实现回调机制、动态函数调用等。

2.2 声明与使用

int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int main() {// 声明函数指针int (*op)(int, int);  op = add;  // 指向 add 函数printf("%d\n", op(2, 3));  // 输出 5op = sub;  // 切换指向 sub 函数printf("%d\n", op(5, 2));  // 输出 3return 0;
}

2.3 高级应用

  • 回调函数(Callback)
void process(int x, int y, int (*callback)(int, int)) {printf("Result: %d\n", callback(x, y));
}
int main() {process(10, 5, add);  // 输出 15process(10, 5, sub);  // 输出 5return 0;
}
  • 函数指针数组
int (*ops[2])(int, int) = {add, sub};
printf("%d\n", ops[0](3, 2));  // 调用 add
printf("%d\n", ops[1](3, 2));  // 调用 sub

3. 结构体指针

3.1 基本用法

结构体指针用于高效操作复杂数据结构,避免值传递的内存拷贝

typedef struct {int id;char name[20];
} Student;
int main() {Student s = {1, "Alice"};Student *p = &s;printf("%s\n", p->name);  // 使用 -> 访问成员return 0;
}

3.2 动态内存分配

Student *createStudent(int id, const char *name) {Student *s = (Student *)malloc(sizeof(Student));s->id = id;strcpy(s->name, name);return s;
}
int main() {Student *s = createStudent(2, "Bob");printf("%d: %s\n", s->id, s->name);free(s);  // 释放内存return 0;
}

3.3 链表实现

typedef struct Node {int data;struct Node *next;
} Node;
int main() {Node *head = NULL;// 插入节点Node *newNode = (Node *)malloc(sizeof(Node));newNode->data = 10;newNode->next = head;head = newNode;// 遍历链表略return 0;
}

4. 综合实战

案例:通用排序函数

// 比较函数
int cmpInt(const void *a, const void *b) {return *(int *)a - *(int *)b;
}
void sort(void *arr, int n, int size, int (*cmp)(const void *, const void *)) {for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {void *p1 = (char *)arr + j * size;      // 计算元素地址void *p2 = (char *)arr + (j+1) * size;if (cmp(p1, p2) > 0) {swap(p1, p2, size);  // 交换内存块}}}
}
int main() {int arr[] = {5, 2, 8, 1};sort(arr, 4, sizeof(int), cmpInt);// 输出排序结果略return 0;
}

5. 避坑指南

问题类型错误示例修正方法
多级指针解引用错误***pp 无意义明确层级:**pp 或 *pp
函数指针类型不匹配int (*p)() 指向 void func()严格匹配返回值和参数类型
结构体指针未初始化Student *p; p->id=1;先分配内存或指向有效结构体变量
  1. 总结
  • 指向指针的指针:用于动态多维数据结构、跨函数修改指针。
  • 函数指针:实现回调、策略模式等灵活编程。
  • 结构体指针:高效操作复杂数据,实现链表/树等动态结构。
http://www.dtcms.com/a/449582.html

相关文章:

  • Django 配置与安装完整指南
  • seo网站优化方法网站建设技术指标
  • Javaweb(BeanUtils)
  • Oracle数据库imp/exp
  • 自己做的网站怎么上传手机百度网页版主页
  • 昆明网站定制建设项目验收在哪个网站公示
  • 大模型开发 - 01 Spring AI 核心特性一览
  • 手赚网 类似网站怎么建设在局域网内访问本机的asp网站
  • AS5600 驱动(HAL库400K硬件IIC+DMA、1MHZ软件IIC)
  • Oracle OCP认证考试题目详解082系列第1题
  • 做网站公司是干什么的安徽工程建设信息网实名制查询
  • Java EE初阶启程记12---synchronized 原理
  • 设计模式简要介绍
  • Python 数据结构综合速查:列表 / 字典 / 集合 / 元组对比
  • 宁波建设工程报名网站搭建一个网站的具体步骤
  • 第十七章:遍历万象,步步为营——Iterator的迭代艺术
  • 记一次vcenter server 无法同步主机的故障处理过程
  • 手搓20颗芯片|专栏开篇:从0到1搭建芯片设计与UVM验证体系
  • 《 Linux 点滴漫谈: 三 》Linux 的骨架:文件系统与目录结构的完整图谱
  • 跨境自建站模板库存网站建设公司
  • 【Web安全】转义字符注入?转义也会失效的SQL注入
  • 虚拟机中建设iis网站网站推广洛阳
  • python+vue高校新生报到管理系统设计(源码+文档+调试+基础修改+答疑)
  • 中秋连连看小游戏开发完整教程
  • 产品图案设计网站一起做网店网站入驻收费
  • traffic-filter inbound acl 概念及题目
  • Python3 XML 解析
  • 驾驭涌现的艺术:自组织系统——解锁复杂世界的创新与适应力
  • 青岛做外贸网站建设西安网站建设培训中心
  • 【MES架构师与C#高级工程师(设备控制方向)两大职业路径的技术】