已有140人关注
字符数组的问题!
发表在C语言答疑区 2017-04-17
是否精华
版块置顶:

字符串.jpg

怎么才能输出str1或str2中每个元素的地址?

书看到这里感觉前面的指针都白学了。。。。。。


分享到:
精彩评论 5
李木子
学分:2954 LV11
2017-04-17
沙发

你好:

   

#include<iostream>

using namespace std;

int main()

{

char str1[10]={'a','b','c','d','e','f','g','h','i','j'};

char str2[10]="abcdefghi";

for(int i=0;i<10;i++)

{

    cout<<"str1["<<i<<"]="<<(void*)(&str1[i])<<"  "<<"str2["<<i<<"]="<<(void*)(&str2[i])<<endl;

}


return 0;


}

c++标准库中I/O类对输出操作符<<重载,在遇到字符型指针时会将其当做字符串来处理,输出指针所指的字符串。既然这样,就用类型转换,即希望任何字符型的指针变量输出地址的话,就得强制转化成void*

quwenhui
学分:166 LV4
2017-04-18
板凳

李木子 发表于2017-04-17 15:52

你好:

   

#include<iostream>

using namespace std;

int main()

{

char str1[10]={'a','b','c','d','e','f','g','h','i','j'};

char str2[10]="abcdefghi";

for(int i=0;i<10;i++)

{

    cout<<"str1["<<i<<"]="<<(void*)(&str1[i])<<"  "<<"str2["<<i<<"]="<<(void*)(&str2[i])<<endl;

}


return 0;


}

c++标准库中I/O类对输出操作符<<重载,在遇到字符型指针时会将其当做字符串来处理,输出指针所指的字符串。既然这样,就用类型转换,即希望任何字符型的指针变量输出地址的话,就得强制转化成void*

360截图-58793453.jpg

字符素组的指针p,直接输出为什么会有乱码?库函数的源码我能看到懂吗?是不是看了源码更容易理解一些。

强制转换必须使用(void *)吗?

强制转换没有返回值吗?

李木子
学分:2954 LV11
2017-04-18
地板

quwenhui 发表于2017-04-18 09:12

360截图-58793453.jpg

字符素组的指针p,直接输出为什么会有乱码?库函数的源码我能看到懂吗?是不是看了源码更容易理解一些。

强制转换必须使用(void *)吗?

强制转换没有返回值吗?

你好:

    按照我上面的程序我这里测试没有错误呀,并且输出地址了。

1.png


quwenhui
学分:166 LV4
2017-04-18
4L

李木子 发表于2017-04-18 11:47

你好:

    按照我上面的程序我这里测试没有错误呀,并且输出地址了。

1.png


您给的代码没有问题,我后发这个是我按照自己理解的指针又写了几行,求指点!

李木子
学分:2954 LV11
2017-04-18
5L

quwenhui 发表于2017-04-18 12:54

您给的代码没有问题,我后发这个是我按照自己理解的指针又写了几行,求指点!

你好:

   将你加的代码第一个cout代码char*改成void *,就可以输出地址了,第二句cout是只输出了str1中的首地址的值,因为你定义了char *p1=str1;第三个cout输出的是乱码,因为定义的p1类型是char *型的。

首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照