关于指针的一些知识

  要说指针"地址",笔者认为必须从内存开始说起,也就是存储单元的地址,他是一种编号,相当于一排的座位,地址==座位编号.

  但是要谈起"指针"可不像平时书上说的那样,指针==地址,这种说法已经被广大的C语言爱好者给抨击了,那指针相当于什么?可能你要这么问,形象的说指针就相当于一个箱子,箱子里面放了一个椅子,椅子的编号是地址,另外一种形象的假设:"就是一张纸,纸上写着比如说外语书在书架二层上,指针==纸,纸上的内容==地址,内容就是书".

  "指针只是存放这个地址的东西,所以才有指针的一系列运算,其实这些运算都是因为他存放了这些地址而赋予的这些运算功能".这个时候人们就习惯的把指针"当成"是地址了!但是内存中实际上还是一个连续的存储段.也就是说在内存中把指针和地址放在一排,而又把指针的地址和地址的内容放在一排,呵呵!有点晕呼啊~

  指针和数组元素的关系:"指针引用数组元素一般就5种方法,一是下标法,二是数组名法,三是指针下标法,四是指针变量法,五是指针变量自增法",其实这些名词一点都不重要,重要是会用就行,笔者在打这些方法的时候还是对着笔记本看着打的呢! 

  指针的数组名和指针的关系:一个是指针常量,一个是指针变量.当然你早就知道在自增自减运算中常量是不能自增自减的.比如这个程序

int i,*pa,a[]={3,4,5,6,7,3,7,4,4,6};
pa =a;
for (i=0;i<=9;i++)
{
   printf ( “%d”, *pa );
    pa++ ;  /*这里是值得注意的地方*/
}
如果你非要把指针定义成常量,那就这样吧兄弟

int i, a[]={3,4,5,6,7,3,7,4,4,6};
int * const pa=a;    /*注意const的位置:不是const int * pa;*/
for (i=0;i<=9;i++)
{
   printf ( “%d”, *pa );
}
这个时候就要注意了,不能用pa++之类的,结果都是3,调试一下你就明白了.

 

   

      

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值