指针!指针!指针!

想知道什么是指针先要知道什么是地址,数据一般存储在内存中。

内存地址就像是房间,数据就是寄存在里的人

每个房间1 字节

int  4  {首地址}{}{}{} 4个房间   1.列举所有房间号    2.首房间,房间数

         存储空间大小

记录一个数据对象在内存中的存储位置须知:数据对象的首地址,数据对象的存储空间大小

指针数据类型

&  取地址符,获取数据对象的首地址和所需存储空间大小

int n;

类型 pn = &n;   这是什么类型呢?这个类型就是指针类型

目标数据类型   * 变量名。

因此我们可以这么写

int *pn =&n

意义:保存变量n首地址和所需空间大小

常用的声明方法例如下代码

	int ol =10; 
	int *pa  = NULL;//空指针 
	int *po,*pb,*pc;//定义方法	
    int *pq;//野指针 
	pq = &ol;//int 指针变量指向int类型变量 
    void *pi;//万能指针啥都能干,指针无论干什么32位4字节     64wei 8字节 

指针类型是通过保存目标数据对象的首地址

通过类型本身标记目标数据对象的空间大小

使用指针       

是取值运算符

根据首地址和空间大小找到目标数据对象

   指针中常用的等价代换:

	int ol;
    int *pq;
    pq = &ol
    *&pq =pq =&ol; 
	&*pq = &ol = pq;

强制类型转换

int n = 123;
int*pn = &n;
char*pc = (char *)pn;

指针的运算

指针类型的值是整数,那么它能否用来运算?

int a = 100;
int *pb;
pb = &a;
 
 short b = 25;
short *pc;
 pc = &b;
 
 long d = 55;
 long *pd ;
 pd = &d;

 float e =99.5;
 float *ef;
ef  =  &e;

printf("%p\n",++pa);
printf("%p\n",++pb);
printf("%p\n",++pc)	;	
printf("%p\n",++pd)	;					
printf("%p",++ef);								
指针++与数据类型有关 

规律 1.sizeof(目标数据对象)被称为步长

        2.指针类型加n后,其首地址向后移动n*步长个字节

        3.指针类型减n后,其首地址向前移动n*步长个字节

应用指针类型加减

	int a = 550;
	int b = 260;
	int *pa;
	int *pb;
	pa = &a;
	pb =&b;
	printf("%d\n",*pa+*pb);//指针运算以其所指值进行运算 
	printf("%d\n",*pa-*pb);	

注意  *p-1  与  *(p-1)是不同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值