021day(指针的运算和指针作为函数参数的用法)
来源:互联网 发布:以前的淘宝订单不见了 编辑:程序博客网 时间:2024/06/18 18:09
172210704111-陈国佳总结《2017年10月31日》【连续021天】
标题:指针的运算和指针作为函数参数的用法
内容:A.观看MOOC8.3,8.4
B.(a).1.两个同类型的指针变量可比较大小;地址p1<地址p2与p1<p2的值为真 等价(可推出其他情况);
2.两个同类型的指针变量,可以相减 两个T*类型的指针 p1和p2 p1 -p2=(地址p1 -地址p2)/ sizeof(T) //p1和p2之间可以塞多少个T变量
3.指针变量加减一个整数的结果是指针; T *p;int n; p + n : T*类型的指针,指向地址: 地址p + n*sizeof(T) ,同理可推n+p,p-n,*(p+n),*(p-n);
4.指针变量可自增,自减;T*p p++,++p :p指向n+sizeof(T) p--,p--:p指向n-sizeof(T)
5.指针可以用下标运算符“[ ]”进行运算; T*p ; int n; p[n]等价于*(p+n) //即地址p+n所对应的量
例题:访问int型变量 a 前面的一个字节
int a;
char * p=(char *) &a;//char类型的大小为1字节 //&a是int *类型
--p;
printf("c%",*p); //可能导致运行出错
* p='A'; //同上
如:int*p1,*p2; int n =4;
char *pc1,*pc2;
p1 =(int*) 100;
p2 =(int*) 200;
cout<<"1)"<<p2-p1<<endl;
pc1 =(char *)p1;
pc2 =(char *)p2;
cout<<"2)"<<pc1-pc2<<endl;
cout<<"3)"<<(p2+n)-p1<<endl;
int*p3=p2+n;
cout<<"4)"<<p3-p1<<endl;
cout<<"5)"<<(pc2 -10)-pc1<<endl;
return 0;
(b).地址0不能访问,指向地址0的指针就是空指针;“NULL”可对任何类型的指针赋值;NULL实际上就是整数0,值为NULL的指针就是空指针;
指针可作为条件表达式使用,指针值为NULL,则为假,反之,为真;if (p) 等价于 if(p!=NULL) if(!p)等价于if(p==NULL)
指针作为函数参数:
如: void Swap(int *p1,int *p2)
{
int tmp=*p1;
*p1=*p2;
*p2=tmp;
}
int main()
{
int m =3,n=4;
Swap(&m,&n); //使得p1指向m,p2指向n //p1,p2指向的地址不变,内容交换了;即*p1,*p2不变,即实参未变;
cout<<m<<" "<<n<<endl;
return 0;
}
明日计划:学习指针与数组的有关知识;
- 021day(指针的运算和指针作为函数参数的用法)
- 作为函数参数的指针
- 指针作为函数的参数
- 作为函数参数的指针
- C和C++函数指针作为函数参数的区别
- 巩固:数组作为函数参数& 指针作为函数参数的用法
- 指针作为函数的参数,引用作为函数的参数
- 函数指针作为函数的参数
- 函数指针作为某个函数的参数
- 函数指针作为某个函数的参数
- 函数指针作为某个函数的参数
- 函数指针作为函数的参数
- 指针的学习(3)指针作为函数的参数的输入和输出的参数的特性
- 指针和双指针作为函数参数
- 指针作为函数参数的情形
- 使用指针作为函数参数的注意事项
- 2.4 作为函数参数的指针
- 指针作为函数参数的讨论
- SQL
- 一起Talk Android吧(第四十八回:Android中的Fragment小结)
- linux, how to define a new array in bash
- Java程序性能优化 读书笔记(十一)并行设计模式:Master-Worker模式
- Java 实现快速排序
- 021day(指针的运算和指针作为函数参数的用法)
- 循环神经网络(RNN, Recurrent Neural Networks)
- 文章标题
- PTA 09—排序
- NOIP模拟 杆子的排列【加强版】【组合数学】
- JZOJ5439. 【NOIP2017提高A组集训10.31】Calculate
- 集合整理
- 小白成长之路(4)--冒泡排序
- 为何要把类的构造函数定义为private