android ndk 02 C语言 二级指针 指针运算 指针与数组
来源:互联网 发布:制作游戏的软件 编辑:程序博客网 时间:2024/05/22 23:34
c函数速查: https://pan.baidu.com/s/1sllYdul
通过几个例子 复习 二级指针 指针的运算 指针与数组 函数指针 练习
指针为什么要有类型
指针和地址的区别, 指针有类型 地址没有类型.
#include <stdio.h>#include <stdlib.h>#include <Windows.h>#include <math.h>#include <time.h>//这是引用的头文件
举例: 1
// 1.指针为什么要有类型?
//指针有类型,地址没有类型
//地址只是开始的位置,类型读取到什么位置结束
void main(){ int i = 89; //int 类型的指针 int *p = &i; double j = 78.9; //赋值为double类型变量的地址 p = &j; printf("double size:%d\n", sizeof(double)); printf("%#x,%lf\n",p,*p); //想通过4字节读取8字节变量的值,是不行的 getchar();}
2. NULL空指针 指针初始化
//2.NULL空指针 指针一般需要初始化 置空void main(){ int i = 9; int *p = NULL; //p = &i; //空指针的默认值为0 printf("%#x\n",p); //访问内存地址0x000000操作系统不允许 //p = 100; //操作系统不允许访问 printf("%d\n",*p); getchar();}
3, 多级指针 使用
//3.多级指针(二级指针)//指针保存的是变量的地址,保存的这个变量还可以是一个指针变量//动态内存分配给二维数组void main(){ int a = 50; //p1上保存的a的地址 int* p1 = &a; //p2上保存的p1的地址 int** p2 = &p1; //int*** p3 = &p2; printf("p1:%#x,p2:%#x\n",p1,p2); **p2 = 90; printf("%d\n",a); getchar();}
上面的例子 通过操作二级指针改变了 a 的值
个人理解 : 二级指针 可以理解成二维数组 三级指针可以理解成三位数组
一级指针是一条线 , 二级指针是一个面, 三级指针 是一个立方体 .
— 分割线 —
第4个例子 指针的运算
发现markdown > 操作不错
//4 指针的运算void main(){ int ids[] = { 78, 90, 23, 65, 19 }; printf("%#x\n", ids); printf("%#x\n", &ids); printf("%#x\n", ids[0]); //指针变量 int *p = ids; printf("%d\n", *p);//默认打印第0个 //指针的加法 p++; printf("p的值 %d\n", *p); printf("16进制 %#x\n", *p); getchar();}
效果图
第五个例子 通过指针给数组赋值
//5 通过指针给数组赋值void main(){ int uids[5]; //int i = 0; //高级写法 现在的写法 这里没有操作指针 实际上内部操作了 /*for (i; i < 5; i++) { uids[i] = i; }*/ //早些版本的写法 操作指针了 int* p = uids; printf("%#x\n", p); int i = 0; //i是数组元素的值 for (; p < uids + 5; p++){ *p = i; i++; } int j = 0; for (; j < 5; j++) { printf("数组 uids[%d] = %d \n", j, uids[j]); } getchar();}
第六个例子 函数指针
函数指针1
int msg(char *msg, char *title){ messagebox(0, msg, title, 0); return 0;}void main(){ //函数返回值类型,函数指针的名称,函数的参数列表 //函数指针 这是把一个函数赋给指针 int(*fun_p)(char *msg, char *title) = msg; fun_p("内容", "title"); getchar();}
函数指针2 例子
int add(int a, int b){ return a + b;}int minus(int a, int b){ return a - b;}void msg(int(*func_p)(int a, int b), int m, int n){ printf("执行一段代码...\n"); printf("执行回调函数...\n"); int r = func_p(m, n); printf("执行结果:%d\n", r);}void main(){ //加法 //int(*func_p)(int a, int b) = add;//把这句 直接放到msg 作为参数穿进去了 msg(add, 3 , 5); getchar();}
运行结果
最后一个例子
//案例:用随机数生成一个数组,写一个函数查找最小的值,并返回最小数的地址,在主函数中打印出来int* getMinPointer(int ids[], int len){ int i = 0; int *p = &ids[0]; for (; i < len; i++) { if (ids[i] < *p){ p = &ids[i]; } } return p;}void main(){ int ids[10]; int i = 0; //初始化随机数发生器,设置种子,种子不一样,随机数才不一样 //当前时间作为种子 有符号 int -xx - > +xx //看c语言速查表 srand((unsigned)time(NULL)); for (i; i < 10; i++) { //100范围内 ids[i] = rand() % 100; printf("%d\n", ids[i]); } //调用 int* p = getMinPointer(ids, sizeof(ids) / sizeof(int)); printf("指针地址: %#x, 最小值: %d", p, *p); getchar();}
运行结果:
阅读全文
0 0
- android ndk 02 C语言 二级指针 指针运算 指针与数组
- C语言二级指针与指针数组的结合使用.
- [C]二级指针与指针数组
- c 指针,二级指针,数组
- C语言学习篇-9指针运算、指针与数组
- C语言:一级指针,二级指针,三级指针,指针数组,数组指针的综合示例
- C语言二级指针
- C语言二级指针
- C语言 二级指针
- C语言二级指针
- C语言:指针数组与数组指针
- C语言指针数组与数组指针
- C语言指针数组与数组指针
- C语言的二级指针与二维数组
- 神奇的C语言三:二维数组与二级指针
- C语言的二级指针与二维数组
- C语言中,一级指针,二级指针,数组,一位数组指针,二位数组指针浅谈
- 指针运算、二级指针
- List子类 ArrayList Vector 和 LinkedList
- 通过java.net.URLConnection发送HTTP请求的方法
- CH340 +Micro USB转串口 不能识别 不起振问题
- 距离变换代码实现(c代码)
- QT布局之水平垂直加Qss样式布局
- android ndk 02 C语言 二级指针 指针运算 指针与数组
- Mysql主从复制和读写分离Amoeba实现
- 测试
- VUE+WebPack游戏设计:为对战扑克牌增加能力槽
- js关闭当前弹出的小窗口并打开新窗口
- ORACLE Scheduler特性(7)Scheduler抛出的Events
- hdu2844
- 如何提高app的用户参与度?
- Wordpress主题magazine point底部版权信息删除