什么是指针的指针?指针的指针
本文目录
什么是指针的指针
指针的指针就是指向一个指针的指针,指针存储的是数据的地址,指针的指针存储的是一个指针的地址因此p=*pp 注意这个等号不是赋值号,p和*pp是等价的
指针的指针
当指针指向的是数组时,如果太复杂,你可以把它改成数组 c是二维数组,里面有4个字符串,“ENTER“,“NEW“,“POINT“,“FIRST“,c是其首地址,指向c,c是ENTER的首地址,指向E;如此类推. a是指向指针的指针的数组,a~a分别和c+3,c+2,c+1,c对应//a=c,所以它指向的是“ENTER“,“NEW“,“POINT“,“FIRST“,而不是ENTER; a是3维的。 再来看b,b=a,所以b就是a,b也是3维的。 **b就是将3维减去2维,也就是1维,是字符串,来看它里面内容: **b=**a,a指向a,*a=a,a=c+3,c+3指向c,即*(a)=*(c+3)=c,c=“FIRST“,所以**b=“FIRST“ *b是将3维去1维,剩2维,也就是说它是二维数组,来看它里面的内容: *b=*a,a指向a,*a=a,a=c+3,而c+3={“FIRST“};所以*b={“FIRST“};//注意和**b的区别:**b是一串字符,是一维的,*b是n串字符,是二维的,只是这里的n=1罢了 再看*b,*b是将3维去了2维(数组下标的作用),因而*b是字符串,再来看其内容: *b=*a,先来看a,a意思是说将取a指针上移两位的内容,在这里只能这么解释,因为在程序里b发生了变化,等到那在解释其内容 *************** 现在来看主程序: 1.输出:**++b内容,由运算级且++在左,先做++,此时b=b+1,指向位置上移一位,*++b=a,a=c+2,**++b=*(c+2)=c=“POINT“, 输出:POINT 2.输出:*--*++b内容:同上,b=b+1,因而*++b=a,在进行--a,a=c+1,--a=c+1-1=c,所以*--*++b=*--a=*c=c=“ENTER“ 输出:ENTER 3.输出:*b+3 ,经过上面的运算,b现在指向的是a,b是b指针下移2位,因而b=a=a,*b=*a=*(c+3)=“FIRST“,也就是说,*b是“FIRST“的首地址,*b+3 就是让首地址后移3位以第四个字符作为开头输出字符串,所以输出: ST4.输出:b+1 ,同上b=a=a=c+2,b=*((c+2)-1)=*(c+1)=c=“NEW“,b+1 ,将首地址后移一位,以第二个字符作为首地址输出字符串,所以输出: EW综上所述,电脑应该输出:POINTENTERSTEW而且整个过程中也不会出现指针下溢出的危险,不过这只是专门弄出来考指针的,所以才设计的没有溢出,自己在编程的时候,最好不要写负数下标,否则极易出现错误。如果还不懂,可以QQ联系:981909314(呼,搞定了,真累)
指针的指针如何理解
你知道的,所有变量编译器都会为其分配内存空间,以便保存一个值,既然占用内存就会存在一个地址,包括指针变量。
指针变量保存的是其他变量的地址。
而指针的指针,保存的就是另一个指针的地址。
你懂的,定义指针使用星号,而指针的指针,定义的时候使用两个星号。
比如:
int a=10; int *p;//指针int **pp;//指针的指针p=&a;//取a的地址赋值给ppp=&p;//取p的地址赋值给pp**p=20;//使用指针的指针对a赋值,间接的间接赋值。指针的指针是什么
指针在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。 指针与C语言大家都认为,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。basic不支持指针,在此不论。其实,pascal语言本身也是支持指针的。从最初的pascal发展至今的object pascal,可以说在指针运用上,丝毫不会逊色于c语言的指针。
更多文章:

js是什么软件(解释js ajax和cgi各是什么工具在b/s中起什么作用)
2025年2月14日 07:00

winform刷新窗体数据(winform中一个窗口关闭后在主窗口上自动刷新显示的数据谢谢)
2025年2月11日 13:40

society of actuaries(数学系跨专业考研)
2025年2月25日 10:20

boarding是什么意思啊(boarding check是什么意思啊)
2025年3月7日 14:20

position属性relative(position定位属性中absolute和relative的区别)
2025年2月23日 00:00

pilot音标(英语China’s largest pilot怎么翻译)
2025年3月31日 21:00

javascript是一种什么语言(javascript属于什么样的语言)
2025年4月4日 09:40

史上最贵的域名cars.com价值8.7亿美金,大家觉得cars.vip怎么样?cars.com和cars.vip这两个域名哪个好
2025年3月17日 02:50

webapi测试(webapi 返回类型到底应该是什么才合适,这是个问题)
2025年3月3日 13:20

jqgrid隐藏列(jqgrid控制列的隐藏显示,怎么使table的宽度不变)
2025年2月13日 21:30

equalsandhashcode(hashcode和equals的关系是什么)
2025年2月18日 19:20