#include <iostream> #include <iomanip> #include <stdio.h> using namespace std; struct HHHHH { HHHHH* pNext; void* unused; void* value; }; HHHHH *gpGloable=NULL; void main() { // ////////////////////////////////////////////////////////////////////////// unsigned int a=100; unsigned int *p=NULL; p=&a; unsigned int **q=NULL; q=&p; cout<<a<<"\t"<<*p<<"\t"<<p<<"\t"<<**(&p)<<endl; printf("%d\n\n",*p); // ////////////////////////////////////////////////////////////////////////// HHHHH ss; ss.unused=&a; unsigned int xx=(unsigned int)(*&(ss.unused)); cout<<hex<<setw(8)<<xx<<endl; cout<< (int*)(ss.unused) <<endl; // 本人想输出unused所指的内容100,但是不行 printf("%d\n\n",* &(ss.unused)); // 本人想输出unused所指的内容100,但是不行 cout<< (char*)ss.value <<endl; //却能输出value所指的内容,why--与上34对比 printf("%s\n\n", ss.value); //却能输出value所指的内容,why--与上36对比 }
请看程序的第34、36行,本人就想在屏幕上输出ss.unused所指的能容,就是100。但是怎么都输不到屏幕上!
本人真怀疑本人到底学没学过C/C++?
还请指点,怎么将ss对象中unused成员所指的内容输出到屏幕中。
如能解答,再贴另外一半
解决方案
6
改为:
printf(“%d\n\n”,* ((int*)(ss.unused)));
printf(“%d\n\n”,* ((int*)(ss.unused)));
14
#include <iostream> #include <iomanip> #include <stdio.h> using namespace std; struct HHHHH { HHHHH* pNext; void* unused; void* value; }; HHHHH *gpGloable=NULL; void main() { // ////////////////////////////////////////////////////////////////////////// unsigned int a=100; unsigned int *p=NULL; p=&a; unsigned int **q=NULL; q=&p; cout<<a<<"\t"<<*p<<"\t"<<p<<"\t"<<**(&p)<<endl; printf("%d\n\n",*p); // ////////////////////////////////////////////////////////////////////////// HHHHH ss; ss.unused=&a; unsigned int xx=(unsigned int)(*&(ss.unused)); cout<<hex<<setw(8)<<xx<<endl; cout<< "test"<<*(int*)(ss.unused) <<endl; // 输出的是16进制100(64) printf("%d\n\n",*(int*)(ss.unused)); // 本人想输出unused所指的内容100,但是不行 cout<< (char*)ss.value <<endl; printf("%s\n\n", ss.value); }