8.9指针重点
来源:互联网 发布:淘宝详情关联怎么做 编辑:程序博客网 时间:2024/05/26 02:21
今天学习了很绕很绕的指针。
早上学的是指向指针的指针,指针变量也是变量,占据一定的内存空间,有地址,因此可以用一个指针指向他。可以用**P表示,一个*表示一个地址,*P = 变量的地址,**P = 变量的地址上的数值的地址,**P是自己也有内存。指针类型和指向指针的数据或指针类型一致。
int a=10;
int *p=&a; 给指针p赋值a的地址
printf("%d,%d",a,*p); 结果输出10 ,10;
int **p1 = &p;
printf("%d",**p1); 结果输出10;
下午学习的是指针的运算:
p = &a ; (将变量a地址赋给p)
p = a; (将数组a首地址赋给p)
p = &a[1]; (将数组元素地址赋予p)
一个类型为T的指针的移动以sizeof(T)为移动单位
int a[3]={1,4,2};
int *p; 分两步写
p=&a[0]或者写成p=a;
for(int i = 0;i<sizeof(a)/sizeof(int);i++){
printf("%d",a[i]); 输出1,4,2 这一行和下一行是等价的
printf("%d",*(p+i)) 输出1,4,2 一个类型为T的指针的移动以sizeof(T)为移动单位,比较两个指针的大小实际上是比较两个地址的前后,在后面的大,所以 p的地址每加i,*(p+i)就是取*p后面的那个地址的值,就可以做到依次取出数组里面的值。
printf("%d",*p++); 输出1,4,2 先执行++,这里是优先级的问题,所以下面的情况是错误的
printf("%d",(*p)++); 输出1,2,3
}
指针与数组:指向数组元素的指针变量 a[i]<==>p[i]<==>*(p+i)<==>*(a+i)
通过指针引用多维数组,a[i]+j代表a[i][j]的地址,a[i]表示某一行的首地址,j是第几列
*(a[i]+j)=a[i][j]
*(*(a+i)+j)等价于*(a[i]+j)
int a[3][3]={{11,5,7},{8,4,6},{1,2,3}};
int *p;
p=&a[0][0];或者可以写为p=&a,意思都是取a数组的首地址
1。for(int i = 0;i<9;i++){因为数组元素是9个,下表从0开始,所以i<9
printf("%d\n",*p++);
printf("%d\n",*(p+i));和上面说的一样
}
2.for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++)
printf("%d\n",*(a[i]+j));这两种输出是等价的,不同的地方是a[i]和*(a+i),a[i]的值是一个地址,表示第i行的首地址,*(a+i)取得的值也是一个地址,表示a的地址移动i个单位以后的地址
printf("%d\n",*(*(a+i)+j))
}
- 8.9指针重点
- 重点指针
- typedef(函数指针)重点说明
- 再谈typedef(重点为函数指针)
- 整理的C语言指针重点
- 再谈typedef(重点为函数指针)
- 再谈typedef(重点为函数指针)
- 《征服C指针》第一章重点小结
- 再谈typedef(重点为函数指针)
- 再谈typedef(重点为函数指针)
- 黑马程序员—C重点--指针
- 再谈typedef(重点为函数指针)
- C语言之重点---指针0808
- C函数重点------指针函数与函数指针【精华】
- 重点
- 重点
- 重点
- 黑马程序员——【C语言】重点指针的简述
- Java通过sessionId获取Session
- linux 下 将一个已有目录添加到git服务器
- Spring中常用的hql查询方法 (getHibernateTemplate())
- MINA框架源码分析(二)
- 使用ANT实现自动化测试
- 8.9指针重点
- HDU 4609——3-idiots
- 源代码管理工具SVN和Git小结
- Android Studio使用笔记——删除项目
- Launcher拖拽原理分析
- 【实习面试】阿里&腾讯offer的点点滴滴(内附干货)2016
- FFMPEG结构体分析:AVIOContext
- web前端开发学习路线
- ELK日志系统:Filebeat使用及Kibana如何设置登录认证