指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数
来源:互联网 发布:pony运动鞋 知乎 编辑:程序博客网 时间:2024/06/10 03:27
http://blog.csdn.net/tototuzuoquan/article/details/37745099
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函数实质,二重指针,函数指针作为参数,泛型函数
- 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数
- 数组、指针作为函数参数
- 关于main函数:指针数组作为main函数的参数
- 学习笔记---指针法访问数组、数组的实质、数组/指针作为函数参数
- 函数指针指针数组
- 数组指针、函数指针
- 指针&数组&函数指针
- 函数指针数组指针!
- 指针,指针数组,数组指针,函数指针
- 指针数组 和 数组指针分析 main函数的参数
- 指针数组,数组指针,函数指针,指针函数,多级指针
- 函数指针/函数指针数组
- 函数指针,函数指针数组
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针、函数指针数组,函数指针数组的指针
- mysql使用命令小结
- light oj 1007 Mathematically Hard (欧拉函数)
- 计蒜客 难题题库 139 字符全排列
- PLS-00103:Encountered the symbol "EXIT" when expecting one of the following:.( ,%
- cout,printf等无控制台输出
- 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数
- caffe安装指南
- 之字形打印二叉树
- 用ajax传递json对象数组的方法
- FineReport集成到AWS系统中的方案
- makefile
- sap知识-MPS和MRP的区别
- Android动画Animation的两种加载执行方式
- 计蒜客 难题题库 140 非递归二叉树的后序遍历