多语言展示
当前在线:1229今日阅读:162今日分享:23

c语言入门:[30]指针初探

指针简单的说就是存储内存地址的变量。定义格式为:数据类型 *指针变量名例如int *p;//p就是一个能够存储整型数据内存地址的指针变量char *v;//v就是一个能够存储字符型数据内存地址的指针变量请看下面的例子:#includemain(){int a=10;int b=20;int c=12;int *p;//p是整型指针变量,能够用来保存整型内存地址p=&a;//p里存储的是变量a的内存地址printf('指针p里存储的内存地址为%p,指针p指向的那块内存里存储的整数是%d\n',p,*p);//*p是取出内存地址里的数据,这个在地址那节中讲过p=&b;//p里存储的是变量b的内存地址printf('指针p里存储的内存地址为%p,指针p指向的那块内存里存储的整数是%d\n',p,*p);p=&c;//p里存储的是变量c的内存地址printf('指针p里存储的内存地址为%p,指针p指向的那块内存里存储的整数是%d\n',p,*p);}指针支持++和--操作 ++就是指针下移操作,--是指针上移操作,我们先看例子:#includemain(){int a=10;int b=20;int *p;printf('变量a的内存地址为%p,变量b的内存地址为%p\n',&a,&b);p=&a;p++;//指针下移printf('指针p指向的地址为%p,里面的数据是%d\n',p,*p);}p=&a;后指针p存储的是变量a的内存地址即0240ff24;p++;后指针下移,所谓下移其实就是把p里存储的地址数据加4,为什么加4呢?因为P是整型指针,在我的电脑环境下一个整数空间就占四个字节,0240ff24+4=0240ff28而地址为0240ff28的这块内存空间我们并不知道里面有什么,所以输出37814120也就不奇怪了。这里要注意,你也许已经发现了,我虽然连续地定义了2个整型变量,但它们的地址却不一定是连续的。我们之前学习的数组是存储一组数据的,数组元素的内存地址一定是连续的,我们再拿数组举例。#includemain(){int a[3]={10,20,30};int *p;p=&a[0];//p指向数组的第一个元素printf('%p,%d\n',p,*p);p++;//下移,指向数组的第二个元素printf('%p,%d\n',p,*p);p++;//再下移,指向数组的第三个元素printf('%p,%d\n',p,*p);}我好像之前没介绍过16进制数,不过没关系,这里简单介绍下10进制数加法是满10进1,16进制数就是满16才进1。数组第一个元素的地址是0240ff18,0240ff18+4是第二个元素的地址,16进制中用a来表示10,b表示11,c表示12......8+4结果是12,0240ff18+4=0240ff1c 为数组第二个元素地址。0240ff1c+4是第三个元素的地址c+4结果是16应该进位了,0240ff1c+4=0240ff20 为数组第三个元素地址。毕竟是初探,所以就讲到这里吧,不知不觉这一系列已经满30篇经验了,看我经验学习的同学还需要到网上找一些基础性的练习做一做,巩固知识的同时也开拓思维。这一系列先到这,以后我会新开一个系列经验,不过还是c语言的。。。。。。。。。。。。。。。。。。。。。。。。。
推荐信息