问题描述
- 为什么a,b的地址取不到
-
#include
using namespace std;
int main()
{
char ch1='I',ch2='Q';
int n1=1, n2=6;
double d1=1.25,d2=20.5;char *a,*b; a=&ch1;b=&ch2; int *c,*d; c=&n1;d=&n2; double *e,*f; e=&d1;f=&d2; cout<<a<<" "<<b<<endl; cout<<c<<" "<<d<<endl; cout<<e<<" "<<f<<endl;
cout<<*a<<" "<<*b<<endl; cout<<*c<<" "<<*d<<endl; cout<<*e<<" "<<*f<<endl; *a+=32; *b+=32; *c-=5; *d-=5; *e+=10.0;*f+=10.0;
cout<<*a<<" "<<*b<<endl;
cout<<*c<<" "<<*d<<endl;
cout<<*e<<" "<<*f<<endl;return 0;
}
解决方案
cout<<a 默认进行处理,输出a所指向的字符串。
写成这样,cout<<(void *)a 因为void型, cout没法输出,只能乖乖输出指针
解决方案二:
因为cout对char*重载了,会输出字符串而不是地址
用cout << (int)*a
看看
解决方案三:
char *a
因为输出就是字符串,不是地址,需要输出字符串的地址 需要输出首地址
cout<< &a[0]
解决方案四:
首先要明确a是一个字符指针变量,那么(void *)a就是求的这个指针的地址
时间: 2024-11-17 04:17:38