类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
在C++中,数组和指针密切相关,几乎可以互相使用。数组名字可以认为是常量指针,它指向存放数组第一个元素的内存地址。指针可以用于完成任何涉及数组下标的操作。
实际上,数组下标表示法在编译期间将转换为指针表示法,所以用指针方式来书写数组下标表达式可以节省编译时间。
例如,对于下面的数组定义:
char name[10]="Smith";
name等于&name[0]。
如果再定义一个字符指针:
char*pname=name;(www.chuimin.cn)
则name[i]、*(*pname+i)和*(name+i)具有相同的值,都是数组第i+1个元素的值。而且&name[i]、name+i和pname+i也具有相同的值,都是数组第i+1个元素所在的位置。下列例子可以验证这一说法的正确性。
【例1.24】分析以下程序的执行结果。
上述程序中,定义了一个短整型数组a(含10个元素)和一个该数组元素的指针pa,首先pa指向数组a的第一个元素,则有a[i]=*(p+i)=*(a+i),&a[i]=a+i=pa+i。程序的执行结果如下:
其中,输出值0x0012FF3A是程序执行时为a数组动态分配的内存地址,读者执行该程序时不一定是这个值。
注意:虽然数组名和指针在引用数组元素和取得它们的地址方面可以互换,但两者有一个重要的不同点:数组名是在定义时就已分配好了内存空间的,因此,数组名是一个地址常量,在程序中不能将数组名作为变量为其赋值,而指针是一个变量,可以多次赋值。
有关C++程序设计基础教程的文章
类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
虚基类的声明是用在指定派生类时,放在派生类名的后面。该指针被称为虚基类指针。解:上述程序中,各类之间构成类层次如图6.14所示,其中虚线表示是虚继承,也就是说,其基类为虚基类。......
2023-11-07
指针初始化有几种方式:指针对象可以被一个具有相同类型的对象初始化。下面的例子将整型指针ip赋给另一整型指针ip2:int*ip2=ip;此时,这两个指针指向同一内存空间,可用图1.8表示。图1.8指针与指针所指对象如果程序员想强制赋给指针另一种类型变量的地址,则必须显式进行类型转换。如要将一个整型指针的值赋给浮点数指针,可以采用以下语句:float*fp=ip;通过直接分配内存地址得到初值。......
2023-11-07
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
数组的每一项都是一个变量,称为数组元素。如果在初始化数组的语句内忽略了数组大小,则数组元素个数就是初始化值的个数。以下初始化形式是合法的:字符数组可以用多个字符或一个字符串初始化,需要注意的是,字符串以空字符NULL结尾,因而也占据一个数组元素的位置。......
2023-11-07
需要注意的是,基类指针虽然获取了派生类对象的地址,但只能访问派生类从基类继承的成员,不能访问派生类中新增的成员,除非对基类指针强制类型转换调用派生类的成员函数。......
2023-11-07
例如,有如下所示的C语句序列:则结构体指针变量p1指向结构体数组元素a[2],其关系如图10.2所示。此时应该注意到被指针变量p1指向的结构体数组元素本身是不能作为整体操作的,所以*p1也不能作为整体操作。......
2023-11-20
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
相关推荐