首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一种c++有关问题求教

2012-09-29 
一种c++问题求教第一种:C/C++ codevoid fun(int& a,int* p){printf(%d,%d,%d,&a,p,&p)}void main(){int

一种c++问题求教
第一种:

C/C++ code
void fun(int& a,int* p){    printf("%d,%d,%d",&a,p,&p);}void main(){      int a = 10;      int b = 20;      fun(a,&b);}


第二种:
C/C++ code
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);}


这两种类型的题,答案都是让选择一些地址值,具体要怎么分析喃?

[解决办法]
第一种:
printf("%d,%d,%d",&a,p,&p);
打印出a的地址,p的值,p的地址
a是引用,所以同main里面的a,p是main里面b的指针,p的值也就是b的地址,p的地址和a,b没有关系
第二种:
printf("%d,%d,%d",c,c2,c3);
打印出c的值,c中属于A的起始地址,c中属于B的起始地址
[解决办法]
处理器的基本指令格式:
operator operand2 operand2; // 指令名称 操作数1 操作数2

指令执行的时候需要把操作load到CPU的寄存器,操作数在内存的位置就是地址, 存储地址的变量就是指针。

指针是有类型的(除了void*), 比如int* 和 char*是不同类型的指针。
[解决办法]
楼主要理清楚了,
C/C++ code
#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);}
[解决办法]
C/C++ code
    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);
[解决办法]
C/C++ code
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);} 

热点排行