初识指针(笔记)

基本的概念和基本注意事项:

int*p 其意思是,p是一个指针,它指向一个int型。同时要注意的是:int *p,q ,并不是指pq都为指针,若要表示均为指针应写成:int *p,*q;


以下是我粗暴的理解:

int a=6;
int *p=&a;


//导致的结果:1.*p可以当作a来使用,*p全等于a,当你输出*p的地址和值的时候,输出的是6的地址和a保存的值:6
//           2.  p的地址变成了a的地址,同时p的值变成了a地址的值是一个int型。


---------------------------------------------------------------------------------------------------------------

int a[]={0,1,2};
int *p=a;         //取数组地址的时候,不用&的符号,其实就说明数组本质上是特殊的指针

//导致的结果:1. *p全等于a,又因为当取数组a与a[0]的地址时,其地址相同,所以*p也可以说全等于a[0]
//           2.  对于p,它的地址等于数组a和a[0]的地址,同时p的值等于a[0]的值,并且p[0]的值等于a[0]的值。

//由上述的第二个结果,对于一个变量如:b=2,可以理解为它是一个数组b[1],当做出*p=&b的操作时
//  会有p[0]=b[0]=2


//如果现在 int *p=&a[2],会有:p[-1]==1,因为此时p[0]==a[2],则p[-1]==a[2-1]==1

指针的用处(目前初接触这个概念)

个人理解主要是用于子函数,可以写一个子函数,参数表中调用指针( &i ) 

将外部的一个变量( i=6 )的地址写入子函数中,子函数写一个:int*p=&i,通过子函数对指针( *p )的运算,如赋值,加减乘除等,改变 *p的值,从而实现对主函数的变量 i 的改造。我们熟知的scanf函数也是如此,通过一系列操作,在scanf函数中,将%d的值放入某一个指针里面,这个指针指向我们所要存放的变量。

补充:

        数组是特殊的指针,也可以这么看  :int a[]  --->int * const a,数组是一个常量指针不可以被改变,这也解释了为什么不能 做数组与数组之间的赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值