021day(指针的运算和指针作为函数参数的用法)

本文详细讲解了指针的基本运算,包括指针之间的比较、相减、加减整数的操作及其结果含义,以及如何利用下标运算符进行访问。此外,还介绍了指针作为函数参数的应用实例,展示了如何通过传递指针来实现变量间的交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《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; 
}

明日计划:学习指针与数组的有关知识;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值