29、指针,及其运算(注意点)

指针可以进行加法,减法,及比较大小的运算。

1、指针加、减一个整形表达式

pointer+/-n:是pointer地址值+/-n×sizeof(*pointer),即地址值实际增加或减少的字节数为n倍对象类型长度。

2、两个对象类型相同的指针进行减法运算

p-q=n:运算结果对象类型是一个整数,表示两个地址值相差的对象类型长度的倍数。

3、指针比较大小,就是比较地址值的高低。

4、首地址:当数据对象的存储长度超过一个字节时,系统自动使用第一个内存单元的地址来表示对象的存储地址,称为首地址。

5、指针常量:NULL,数组名,函数名

6、初始化:

int a[4],*p;

p=NULL;

p=a+1;

double (*f)(double)=sin;

7、安全使用指针:

  用已有变量或数组元素作指针对象

  用malloc和free分配和释放

  void *malloc(n);

  free(void *p);

8、指针与数组在大多数情况下可以相互替换,但是并不等价。数组名对应起始地址,在生命周期内不可改变,但数组内容可以改变;而指针变量是一个变量。注意下面一个例子:

#include "iostream"

using namespace std;

int main()

{

char* p1="world"; //指针指向常量字符串

p1[0]='X';    //p1指向常量,该语句试图修改常量,是错的

cout<<p1;

return 1;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值