c++ 类中的char*
阿神
阿神 2017-04-17 12:07:24
0
1
615

假设Student类里有
char* a ="Tom";
char* b ="Rose";

如果有
Student* p;

那么
cout << p->a; // 输出Tom
cout << *(p->a); //输出T

这是为什么呢? a不是一个指针吗,如果是cout << p->a; 不是应该会输出a的地址吗

为什么cout << *(p->a); 只是输出T呢?

阿神
阿神

闭关修行中......

모든 응답(1)
Ty80

一个表示字符串的变量本质上就是指针,一个表达式两个意思,编译器肯定得有一个确定的逻辑来处理这种情况,不然就乱套了

实际上C++标准库中I/O类对<<操作符进行重载时的实现逻辑是:在遇到char类型指针时会将其固定当作字符串来处理,输出指针所指的字符串。

要想输出地址,强制转化为无类型的指针即可

cout << static_cast<const void *>(p->a);

*(p->a)为啥是T

对一个char类型指针取值*操作,当然是取得一个char的值咯

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!