一种c++问题求教
第一种:
void fun(int& a,int* p){ printf("%d,%d,%d",&a,p,&p);}void main(){ int a = 10; int b = 20; fun(a,&b);}
class A{};class B{};class C:public A,B{};void main(){ A* a = new A; B* b = new B; C* c = new C; C* c2 = (C*)a; C* c3 = (C*)b; printf("%d,%d,%d",c,c2,c3);}
#include <stdio.h> #include <iostream.h> void fun(int& a,int* p){ cout<<"a引用的地址:" << &a <<endl; cout<<"a引用的地址存的值:" << a <<endl; cout<<"p指针指向的地址:" << p <<endl; cout<<"p指针指向的地址存的内容:" << *p <<endl; cout<<"p指针存放的地址:" << &p <<endl;}void main(){ int a = 10; int b = 20; cout<<"a的地址:" << &a <<endl; fun(a,&b);}
[解决办法]
A* a = new A; B* b = new B; C* c = new C;//C对象的首地址 C* c2 = (C*)a;基类A的首地址 C* c3 = (C*)b;//基类B的首地址; printf("%d,%d,%d",c,c2,c3);
[解决办法]
void fun(int& a,int* p){ printf("%d,%d,%d",&a,p,&p); //p是局部变量指向你实参的地址b,与b的地址一致,但是&p是指针的地址,两者不同; //局部变量&a是就是main函数的a的一个引用,即地址是一致的!}void main(){ int a = 10; int b = 20; fun(a,&b);}