怎么才能输出str1或str2中每个元素的地址?
书看到这里感觉前面的指针都白学了。。。。。。
你好:
#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*
李木子 发表于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*
字符素组的指针p,直接输出为什么会有乱码?库函数的源码我能看到懂吗?是不是看了源码更容易理解一些。
强制转换必须使用(void *)吗?
强制转换没有返回值吗?