612指针变量的赋值、初始化蜀简单泫用 请看以下几个指针使用的例子: int*p a,k=5; p=&k //合法,p指向k g=p /合法,p和q都指向k p=0 /合法,p悬空 p=&5 /非法,常量不可寻址 p=(int*)0x2700//不允许直接干预内存分配 D
6.1.2 指针变量的赋值、初始化与简单应用 请看以下几个指针使用的例子: int *p,*q,k=5; p=&k //合法,p指向k q=p //合法,p和q都指向k p=0 //合法,p悬空 p=&5 //非法,常量不可寻址 p=(int *)0x2700 //不允许直接干预内存分配
6this指针 在上一小节,我们讨论了指向对象和结构变量的指针。 当我们在对象的外部访问该对象的公有成员时,必须指 明是哪一个对象。但是当我们用对象的成员函数来访问 本对象的成员时,在成员函数中只要给出成员名就可以 实现对该对象成员的访问。再进一步可用同一个类创建 很多个对象,但它们共用同一份成员函数的拷贝。既然 是同一份拷贝,那么成员函数又怎么知道是取哪一个对 象的成员数据呢?其实当调用一个成员函数时,系统自 动产生一个隐藏的指针,这个指针称为this指针,它始 终指向产生这个调用的对象,并将该指针作为一个参数 自动传递给该成员函数。这就是说,成员操作符总是要 使用的,只不过在对象内是隐式的,而在对象外是显式 的。即在对象内省略了this指针
6.2 this 指针 在上一小节,我们讨论了指向对象和结构变量的指针。 当我们在对象的外部访问该对象的公有成员时,必须指 明是哪一个对象。但是当我们用对象的成员函数来访问 本对象的成员时,在成员函数中只要给出成员名就可以 实现对该对象成员的访问。再进一步可用同一个类创建 很多个对象,但它们共用同一份成员函数的拷贝。既然 是同一份拷贝,那么成员函数又怎么知道是取哪一个对 象的成员数据呢?其实当调用一个成员函数时,系统自 动产生一个隐藏的指针,这个指针称为this指针,它始 终指向产生这个调用的对象,并将该指针作为一个参数 自动传递给该成员函数。这就是说,成员操作符总是要 使用的,只不过在对象内是隐式的,而在对象外是显式 的。即在对象内省略了this指针
62this指针 实际上编译器是这样实现this指针的 1.改变类成员函数的定义,用附加参数this指针来定义每个成员函数。如: void Goods: Register Goods(Goods*this, char nam, int amount, float price)t strcpy ( this->Name, name);this->Amount=amount; this->price=pricei } 2.每个类成员函数的调用,加上一个附加的实参被调用对象的地址。 如 Car1. Register Goods( String, number, pr )i 改变为: Register Goods(& Car1, String, number, pr) D
6.2 this 指针 实际上编译器是这样实现this指针的 1.改变类成员函数的定义,用附加参数this指针来定义每个成员函数。如: void Cgoods::Register Goods(Cgoods*this,char*nam,int amount,float price){ strcpy(this->Name,name);this->Amount=amount; this->price=price; } 2.每个类成员函数的调用,加上一个附加的实参——被调用对象的地址。 如: Car1.RegisterGoods ( String , number , pr ); 改变为: RegisterGoods ( &Car1 , String , number , pr);
63数组与指针 6.3.1数组与数组元素 6.3.2数组名、指针和指针运算 6.3.3指针、数组名作为函数参数 6.3.4字符串处理 D
6.3 数组与指针 6. 3. 1 数组与数组元素 6. 3. 3 指针、数组名作为函数参数 6. 3. 2 数组名、指针和指针运算 6. 3. 4 字符串处理
631数组与飘组元素 数组的应用是非常广泛的,在数据结构中称为线性表(list),下 面我们看一个对数组最简单的操作。 【例63】找出一个整型数组各数组元素中的最大数和最小数, 数组中的数由随机数函数 rando产生 程序EX63cpp D
6.3.1 数组与数组元素 数组的应用是非常广泛的,在数据结构中称为线性表(list),下 面我们看一个对数组最简单的操作。 【例 6.3】找出一个整型数组各数组元素中的最大数和最小数, 数组中的数由随机数函数 rand()产生。 程序Ex6_3.cpp