1、指针数组

数组里面的每个元素都是指针。

指针数组的案例如下:

易犯错误:

2、数组指针

归根结底还是指针,只是取*的时候能够取出一整个数组出来。

数组指针:(一个指针指向了数组,一般和二维数组搭配使用)。

下面的(p+1)表示的是加过20个字符。

3、函数指针:

在gcc编译的时候增加一些调试信息的方式是:

gcc demo.c –g –o app   -g表示增加一些调试信息

objdump –dSsx app > file   将app反汇编,然后重定向到file文件中。函数指针定义:

4、指针作为参数

sizeof(p)

sizeof(*p)

p+1

char *  p[10]

40

4

加过4个Byte

char **p

4

4   注意sizeof(**P)= 1

加过4个字节

char (*p)(void) 函数指针

4

无大小

无意义

char (*p)[20]  数组指针

20

5、main函数实质介绍:

6、二重指针:

指针数组和二重指针实际上是等价的。

7、数组指针等价于二维数组:

8、函数指针作为函数的参数

9、泛型函数:

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

void show_arry(int a[], int n)

{

inti;

for(i = 0; i < n; i++)

printf("%d\n",a[i]);

putchar('\n');

}

void init_arry(int a[], int n)

{

inti;

srand(time(NULL));

for(i = 0; i < n; i++)

a[i]= rand() % 100;

}

int cmp_int(void *a, void *b)

{

intx = *((int *)a);

inty = *((int *)b);

returnx > y;

}

void swap_int(void *a, void *b)

{

inttmp;

tmp= *((int *)a);

*((int*)a) = *((int *)b);

*((int*)b) = tmp;

}

//泛型模板是通过void *的方式得到的。

void bubble_sort(void *a, int n,int(*cmp)(void *, void *), void (*swap)(void *, void *))

{

inti, j;

for(i = 0; i < n; i++)

for(j = 0; j < n-i-1; j++)

if(cmp((void *)((int *)a+j), (void *)((int *)a+j+1)) > 0)

//注意这里的(int*)只是告诉编译器传递的是4个字节的长度,对于float的也是四字节的。

swap((void*)((int *)a+j), (void*)((int*)a+j+1));

}

/*

int main(void)

{

inta[10];

init_arry(a,10);

show_arry(a,10);

bubble_sort(a,10, cmp_int, swap_int);

show_arry(a,10);

}

*/

int cmp_float(void *a, void * b)

{

return*((float *)a) > *((float *)b);

}

void swap_float(void *a, void *b)

{

floattmp;

tmp= *((float *)a);

*((float*)a) = *((float *)b);

*((float*)b) = tmp;

}

void show_float(float a[], int n)

{

inti;

for(i = 0; i < n; i++)

printf("%f\n",a[i]);

putchar('\n');

}

int main(void)

{

floata[5] = {1.3, 4.5, 2.3, 1.2, 3.7};

bubble_sort(a,5, cmp_float, swap_float);

show_float(a,5);

}

指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数相关推荐

  1. python 成员函数 泛型函数_【一点资讯】白学这么多年 Python?连泛型函数都不会写? www.yidianzixun.com...

    泛型,如果你尝过java,应该对他不陌生吧.但你可能不知道在 Python 中(3.4+ ),也可以实现 简单的泛型函数.在Python中只能实现基于单个(第一个)参数的数据类型来选择具体的实现方式, ...

  2. Python学习笔记7:函数对象及函数对象作參数

    一.lambda函数 比如: fun1 = lambda x,y: x + y print fun1(3,4) 输出:7 lambda生成一个函数对象.该函数參数为x,y,返回值为x+y.函数对象赋给 ...

  3. 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为參数,泛型函数...

     1.指针数组 数组里面的每一个元素都是指针. 指针数组的案比例如以下: 易犯错误: 2.数组指针 归根结底还是指针,仅仅是取*的时候可以取出一整个数组出来. 数组指针:(一个指针指向了数组.一般 ...

  4. c/c++ 函数、常量、指针和数组的关系梳理

    压力才有动力,15年中旬就要准备实习,学习复习学习复习学习复习学习复习--无限循环中,好记性不如烂笔头--从数组开始,为主干. c 的array由一系列的类型相同的元素构成,数组声明包括数组元素个数和 ...

  5. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  6. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

    指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...

  7. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

  8. 指针、数组、函数阶段小结

    引子:数据在内存中是如何存储的,又是如何读取的?内存编号就是内存的地址(内存中每个字节都有一个编号,即地址) 1.概念: 地址:内部存储器的编号,称为地址.如变量a的位置编号,变量b的位置都是指针. ...

  9. C语言程序设计 | 指针的进阶(一):字符指针、数组指针、指针数组、函数指针

    指针的进阶(一)目录: 字符指针 数组指针和指针数组 函数指针 字符指针 在开始讲解这一章节之前,我们需要了解指针前面声明的类型的意义 类型 * 指针名 对于指针来说,我们在给指针进行声明时,我们声明 ...

最新文章

  1. 推荐一个网站拿下机器学习优质资源!搜索效率极大提高
  2. python默认参数只被解释一次_深入讲解Python函数中参数的使用及默认参数的陷阱...
  3. Ubuntu各大分支版本功能介绍及下载地址
  4. java和jvm_java 和 JVM
  5. Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)
  6. LeetCode LCP 33. 蓄水(暴力枚举)
  7. HOHO 拿了個小嘉獎 Happy一下 可惜過年可能被留下...痛苦
  8. unity脚本生命流程
  9. bellman ford优先队列优化简介模板
  10. 机器学习基础算法23-XGBoost实践
  11. CentOS 5.5 使用 EPEL 和 RPMForge 软件库
  12. Aitit aop之道 艾龙著 需要整合zop资料包东西 第1章 AOP的产生         1.1 软件开发方法的演进         1.2 AOP产生的前奏——把系统看做一批关注点
  13. js获取网络时间(axios获取响应头时间)
  14. HTML-----超链接与表格Lable(详细可看)
  15. quartz定时任务集群版
  16. 黎活明给程序员的忠告
  17. springboot 调用萤石Saas平台
  18. 解决方案:macOS Mojave下Pycharm运行pygame无法加载外星人游戏图片以及无法修改颜色
  19. 航拍“中国南北地理分界线” 感受独特景观
  20. JAVA获取百度网盘下载真实地址

热门文章

  1. Markdown部分知识点
  2. 浅谈MyBatis二级缓存
  3. boost::shared_lock相关的测试程序
  4. boost::hana::when用法的测试程序
  5. GDCM:SCU功能的测试程序
  6. Boost:转换sqrt的测试程序
  7. DCMTK:将DICOM文件的内容转换为XML格式
  8. VTK:PolyData之DeletePoint
  9. VTK:几何对象之OpenVRCylinder
  10. OpenCV极变换polar transforms的实例(附完整代码)