与君(指针)初相识

1.指针==地址

符号:&,取地址符

eg:

int a=10;

&a;//   取得a的整型地址   

int *p;//定义整型指针

int  *p=&a;//整型指针变量存放整型地址

2.  *  在C语言中的含义

①表定义指针,int *p;

②解引用,间接访问符,int *p=&a;//此时p能间接访问a的地址

③表乘法,a*b;

3.指针占的字节数

在X86或者32位平台指针4字节,在X64或者64位平台指针8字节

代码分析:

int main()

{ int a = 10;

int b = 20;

int *p = &a;

*p = 100;//a = 100;

p = &b;

*p = 200;//b = 200;

int **pp = &p;//二次指针

*pp = &a;//p = &a;

**pp = 1000;//(二次解引用:*pp解引用得到p,*p解引用得到&a),即可以得到a=1000;

*pp = &b;//p = &b;

**pp = 2000;//b = 2000;

return 0;}

指针相比一般的变量多了一个功能就是解引用(即是间接访问)

数据变量

类型

取地址

指针

a

int

&a

int *

b

double

&b

double *

p

int *

&p

int **

 

数据变量——>指针 ,通过取地址符

指针——>数据变量,通过解引用实现

 

4.指针算术运算

指针加法运算需要调整指针,调整的权重就是指针本身去掉一个*号再求sizeof(),例如

知 int *p;

求 P+1;//加4个字节(因为sizeof(int)=4);

知 double *p;

求  P+1;//加8个字节,(因为sizeof(double)=8);

下面通过一个程序进行分析:

int main()

{

     int*p = (int *)10000;

     printf("%d\n",p+1);//10004

     printf("%d\n",p+4);//10016

     printf("%d\n",(char*)p+4);//10004

     printf("%d\n",(short*)p+4);//10008

     printf("%d\n",(double*)p+4);//10032

     printf("%d\n",(unsigned long long)p+1);//10001

     printf("%d\n",(int***)p+1);//10004

     return0;

}

 

 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值