指针数组与指向指针的指针

指针数组与指向指针的指针

ID:78044062

大小:22.31 KB

页数:10页

时间:2022-01-30

指针数组与指向指针的指针_第1页
指针数组与指向指针的指针_第2页
指针数组与指向指针的指针_第3页
指针数组与指向指针的指针_第4页
指针数组与指向指针的指针_第5页
指针数组与指向指针的指针_第6页
指针数组与指向指针的指针_第7页
指针数组与指向指针的指针_第8页
指针数组与指向指针的指针_第9页
指针数组与指向指针的指针_第10页
资源描述:

《指针数组与指向指针的指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C/C++中字符指针数组及指向指针的指针的含义就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。先看下面的代码,注意看代码中的注解:#include#includeusingnamespacestd;voidprint_char(chararray口,intlen;//函数原形声明voidmain(void{//段1chara[]={"abc","cde","fgh"};//字符指针数组charb=a;//定义一个指向指针的指针,并赋

2、予指针数组首地址所指向的第一个字符串的地址也就是abc字符串的首地址cout<

3、数组,而是字符指针他每加1也就是加上sizeof(char的长度{for(inti=0;i{cout<

4、串的起始地址,而这三个位置的内存地址却不是这三个字符串的起始地址,在这个例子中a口是存储在栈空间内的,而三个字符串却是存储在静态内存空间内的const区域中的,接下去我们看到了charb=a;这里是定义了一个指向指针的指针,如果你写成charb=a;那么是错误的,因为编译器会返回一个无法将char[3]转换给char的错误,b=a的赋值,实际上是把a的首地址赋给了b,由于b是一个指向指针的指针,程序的输出cout<

5、+1操作事实上是一次加sizeof(char的操作,我们在32位的系统中sizeof(char的长度是4,所以每加1也就是+4,实际上是a[]内部三个位置的+1,所以(b+1的结果自然就是cde了,我们这时候可能会问,为什么输出是cde而不是c一个呢?答案是这样的,在C++中,输出字符指针就是输出字符串,程序会自动在遇到后停止.我们最后分析一下段2中的代码,段2中我们调用了print_array(这个函数,这个函数中形式参数是chararray口和代码中的chartest□一样,同为字符指针,当你把

6、参数传递过来的时候,事实上不是把数组内容传递过来,test的首地址传递了进来,由于array是指针,所以在内存中它在栈区,具有变量一样的性质,可以为左值,所以我们输出写成了,cout<

7、O[C/C++]指向指针的指针一个指针变量可以指向整型变量、实型变量、字符类型变量,当然也可以指向指针类型变量。当这种指针变量用于指向指针类型变量时,我们称之为指向指针的指针变量,这话可能会感到有些绕口,但你想到一个指针变量的地址就是指向该变量的指针时;这种双重指针的含义就容易理解了。下面用一些图来描述这种双重指针,见图6-13。在图中,整型变量i的地址是&i,将其传递给指针变量p,则p指向i;实型变量j的地址是&j,将其传递给指针变量p,则p指向j;字符型变量ch的地址是&ch,将其传递给指针变量p

8、,则p指向ch;整型变量x的地址是&x,将其传递给指针变量p2,则p2指向x,p2是指针变量,同时,将p2的地址&p2传递给pl,则pl指向p2o这里的pl就是我们谈到的指向指针变量的指针变量,即指针的指针。指向指针的指针变量定义如下:类型标识符指针变量名例如:floatptr;其含义为定义一个指针变量ptr,它指向另一个指针变量(该指针变量又指向一个实型变量)。由于指针运算符“整自右至左结合,所以上述定义相当于:float(ptr;卜面看

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。