C++指针经典应用

C++指针经典应用

ID:46579316

大小:112.37 KB

页数:15页

时间:2019-11-25

C++指针经典应用_第1页
C++指针经典应用_第2页
C++指针经典应用_第3页
C++指针经典应用_第4页
C++指针经典应用_第5页
资源描述:

《C++指针经典应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、指针经典应用:1.#includeintmain(void){charstr[]="helloworld";for(inti=0;iusingnamespacestd;intmain(){char*str[]={"

2、welcome","to","Fortemedia","Nanjing"};char**p=str+1;str[0]=(*p++)+2;str[1]=*(p+1);str[2]=p[1]+3;str[3]=p[0]+(str[2]‐str[1]);cout<

3、r**变量的值。char**p=str+1;str指向的类型是char*型的,所以p的值是(int)str+sizeof(char*),显然p指向了str的第二个元素即str[1]的地址。(*p++)+2;,p的值变为(int)p+sizeof(char*),,显然此时p指向了str[2]的地址,再进行*运算,由于后置是++返回未变化的p的值,取到了str[1]的值,即指向字符串"to"的指针的值,由于*p类型是char*的所以](*p++)+2;最终str[0]指向了“to”结尾的'/0'所以输出str[0]时为空。st

4、r[1]=*(p+1);,显然str[1]指向了字符串"Nanjing"的首地址。cout<usingnamespacestd;intmain(){inti[2]={1073741824,‐107

5、3741824};int*p1=&i[0];char*p2=(char*)&i[0];float*p3=(float*)&i[0];cout<<*p1<<''<<*p2<<''<<*p3<

6、*提领p1所指向的内存里的数据时,由于p1是int*型的,所以会从地址值为&i[0]开始,往下涵盖四个字节(sizeof(int))的内存,然后把里面的数据安照int变量的存储方式解析成一个int型数值。1073741824在内存&i[0]~&i[0]+3中存储是0x00,0x00,0x00,0x40,(小段机补码存储),所以*p1的值是1073741824。而p2是char*型的,所以仅从地址值为&i[0](sizeof(char))的内存把里面的数据按照char变量的存储方式解析成一个char型数值,由于地址值为&[i

7、]的内存里是0x00,所以*p2为0.同样由于p3是float*型的,所以会从地址值为&i[0]开始,往下涵盖四个字节(sizeof(float))的内存,然后把里面的数据安照float变量的存储方式解析成一个float型数值。由于float型变量的存储方式不同于整型,c/c++浮点数存储遵循ieee标准,按照标准*p3的值为2.0(具体请参见本博客里一篇关于float内存布局的博文,不再赘述)。另外从上述代码我们可以看到,指针变量的类型还影响着指针变量算术运算时的跨度,即指针变量+1时,指针变量的值会增加sizeof(指

8、针所指向变量的类型)。*/4.#includeusingnamespacestd;voidarrayTest(charstr[]){cout<

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

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

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