1、ios
samplec++
#include<iostream> using namespace std; void* test(void* pass) { return pass; } int _tmain(int argc, _TCHAR* argv[]) { char* a=(char*)malloc(sizeof(char)); a="a"; char* b = (char*)malloc(sizeof(char)); b=(char*)test(a); cout<<"b:"<<b<<endl; cout<<"a:"<<a<<endl; getchar(); return 0; }
注意 test的返回值爲void* 要強制轉換成char*指針spa
2、指針
#include <iostream> using namespace std; class CBase { public: CBase(int a,long b,char c) { a=a; b=b; c=c; } private: int a; long b; char c; }; int main() { unsigned long num1 = 0; unsigned long num2 = 0; unsigned long num3 = 0; unsigned long num4 = 0; unsigned long num5 = 0; CBase *base1 = new CBase(10,100,'d'); CBase *base2 = new CBase(10,200,'c'); num1 = *((unsigned long*)base1); num2 = *((unsigned long*)base2); num3 = unsigned long((unsigned long*)base1); num4 = unsigned long((unsigned long*)base2); cout << "num1:"<< num1<< endl; cout << "num2:"<< num2<< endl; cout<<endl; cout << "num3:"<< num3<< endl; cout << "num4:"<< num4<< endl; getchar(); return 0; }
1)因爲類的private裏的數據排列時 先int,long而後是char.code
指針Base1和Base2的指針自身的地址是不同的;指向的內容不同;blog
可是當指針強制轉換成long(32位下是4個字節)型的時候;在再解引用時候;他們指向是分別是Base1類的前四個字節和Base2類的前四個字節;而因爲他們的前四個字節get
? 解引用爲何不是10?io
用c++的強轉class