关于void*函数返回

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

相关文章
相关标签/搜索