指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为參数,泛型函数...
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函数实质,二重指针,函数指针作为參数,泛型函数...相关推荐
- python 成员函数 泛型函数_【一点资讯】白学这么多年 Python?连泛型函数都不会写? www.yidianzixun.com...
泛型,如果你尝过java,应该对他不陌生吧.但你可能不知道在 Python 中(3.4+ ),也可以实现 简单的泛型函数.在Python中只能实现基于单个(第一个)参数的数据类型来选择具体的实现方式, ...
- Python学习笔记7:函数对象及函数对象作參数
一.lambda函数 比如: fun1 = lambda x,y: x + y print fun1(3,4) 输出:7 lambda生成一个函数对象.该函数參数为x,y,返回值为x+y.函数对象赋给 ...
- 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数
1.指针数组 数组里面的每个元素都是指针. 指针数组的案例如下: 易犯错误: 2.数组指针 归根结底还是指针,只是取*的时候能够取出一整个数组出来. 数组指针:(一个指针指向了数组,一般和二维数 ...
- c/c++ 函数、常量、指针和数组的关系梳理
压力才有动力,15年中旬就要准备实习,学习复习学习复习学习复习学习复习--无限循环中,好记性不如烂笔头--从数组开始,为主干. c 的array由一系列的类型相同的元素构成,数组声明包括数组元素个数和 ...
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...
- C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...
- 指针、数组、函数阶段小结
引子:数据在内存中是如何存储的,又是如何读取的?内存编号就是内存的地址(内存中每个字节都有一个编号,即地址) 1.概念: 地址:内部存储器的编号,称为地址.如变量a的位置编号,变量b的位置都是指针. ...
- C语言程序设计 | 指针的进阶(一):字符指针、数组指针、指针数组、函数指针
指针的进阶(一)目录: 字符指针 数组指针和指针数组 函数指针 字符指针 在开始讲解这一章节之前,我们需要了解指针前面声明的类型的意义 类型 * 指针名 对于指针来说,我们在给指针进行声明时,我们声明 ...
最新文章
- 互联网人的平均时长,居然这么短...
- Solution : Cannot add new node – Rule SQL Server Database Services feature state failed.
- asp.net core的文件下载
- smart client auto update
- 语义分割VOC2012标签处理
- p12解析流程_解析P12证书 | 学步园
- 机器学习sklearn之支持向量回归(SVR)
- 将DVD中的VOB文件无损转换为MP4等常用视频格式的方法
- 湖南软件计算机单招较好学校,长沙岳麓区计算机IT单招学校排行榜
- java繁体_Java-汉字繁体拼音转换
- device-mapper: multipath: Failing path recovery
- Verilog语言基础
- ios11更新提示信任_iPhone手机iOS11怎么设置信任软件
- Vue.js 使用cordova camera插件调取相机
- 速度与AI兼得:荣耀Play“GPU Turbo”是什么大杀技?
- grpc入门到精通_gRPC[go语言]大师教程,构建现代化Api和微服务
- 解决MacBook外置鼠标不灵敏,移动速度慢
- 高等数学(第七版)同济大学 习题12-6 个人解答
- Kafka之Fetch offset xxx is out of range for partition xxx,resetting offset情况总结
- selenium被检测
热门文章
- 【Android】安装时, 先拷so主目录(当前设备相关),再拷so次目录,不重复拷贝 (armeabi/armeabi-v7a) arm-v7不兼容arm-v5
- 【Android】启动过程:Bootloader-System/Recovery
- 实现一个通用的中英文排序工具
- 【转】先说IEnumerable,我们每天用的foreach你真的懂它吗?
- DevExpress 中 在做全选的全消功能的时候 加快效率
- datasnap 2011连接池,数据集对象池
- ORACLE和MYSQL函数
- ActiveMQ相关存储介绍
- Selenium + Grid + Testng并发运行用例
- 15 JS应用-todolist任务