课程作业:__ C++语言程序设计__ 姓名:__陶浩__ 学号:_1708090122_ 班级:_惠普测试 171_
6-6:运算符“*”和“&”有什么作用?
C++提供了两个与地址相关的运算符“*”和“&”。“*”称为指针运算符,也称解析,表示获取指针所指向的变量的值,这是一个一元操作符。例如,*ptr表示指针ptr所指向的变量的值。
“&”称为取地址运算符,也是一个一元操作符,用来得到一个对象的指针,例如&i就可以得到变量的存储单元地址。
Int *p;一元运算符“*”出现在声明语句中,在被生命的变量名之
前,表示声明的是指针。
“*”出现在执行语句中或生命语句的初始化表达式中作为一元运算符,表示访问所指对象的内容。
“&”出现在变量声名语句中位于被声明的变量左边时,表示声明的是引用,例如:int &rf;
“&”在给变量赋初值是出现在等号右边或在执行语句中作为一元运算符出现时,表示取对象的地址,例如: Int a,b; Int *pa,*pb=&b; Pa=&a;
6-7:什么叫做指针?指针中储存的地址和这个地址中的值有何区别?
指针是一种和数据类型,具有指针类型的变量也成为指针变量。指针变量存放的是另一种对象的地址,这个地址中的值就是另一种对象的内容。
6-11:引用和指针有何区别?何时只能使用指针而不能使用引用? 引用是一种别名,不能为NULL值,不能被重新分配,指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。
6-15:const int *p1和int *const p2的区别是什么?
Const int *p1声明的是一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int *const p2声明了一个指针型常量,
用于存放整型常量的地址,这个指针一旦初始化后,就不能被重新赋值了。
6-17:体会使用指针时应该如何避免出现这个问题?
指针没有被初始化,也就是说没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址复制是错误的行为啊。 6-18:体会使用指针时应该如何避免出现这个问题?
// 课后618.cpp : 定义控制台应用程序的入口点。 //
#include \ #include
int fun1() { }
int main() { }
int a = fun1();
cout << \ << a << endl; cout << \陶浩 1708090122 惠普测试171\< int *p = new int(5); return 0; 这个程序给*p分配的内存没有被释放掉。 改正: #include \ #include int *fun1() { } int main() { int *a = fun1(); cout << \ << a << endl; cout << \陶浩 1708090122 惠普测试171\< int *p = new int(5); return 0; } Delete之后 int *p = new int(5); 这句是从堆上分配一个int型变量所占的字节内存,这个内存单元存放的整数值为5,然后让一个整形的指针变量p指向它的地址。 释放方式:delete p; int *p = new int[5]; 这句相当于从堆上分配一个含有5个元素的整形数组所占的字节内存,然后让一个整形的指针变量p指向它的首址。 释放方式:delete []p;(注意这个[]不能掉了,如果掉了就会只释放P[0]所占的空间,p[1]到p[4]不会被释放,产生内存泄露。) 6-20:实现一个名为SimpleCircle的简单圆类。其数据成员int *itsRadius为一个指向其半径值的指针,存放其半径值。设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。 // 课后620.cpp : 定义控制台应用程序的入口点。 // #include \ #include class SimpleCircle { public: }; //无形参的构造函数 SimpleCircle::SimpleCircle() { } //有形参的构造函数 SimpleCircle::SimpleCircle(int radius) { } SimpleCircle::SimpleCircle(const SimpleCircle &S) { } int SimpleCircle::GetRadius()const { } SimpleCircle::~SimpleCircle() { } int main() { SimpleCircle Circle1; //调用无形参构造函数 cout << \ << Circle1.GetRadius() << endl; const SimpleCircle Circle2(6);//调用有幸参构造函数 cout << \ << Circle2.GetRadius() << endl; SimpleCircle Circle3(Circle2); cout << \ << Circle3.GetRadius() << endl; cout << \陶浩 1708090122 惠普测试171\ << endl; return *itsRadius; int r = S.GetRadius(); itsRadius = new int (r); cout << \ << endl; itsRadius = new int(radius); cout << \ << endl; itsRadius = new int(5); cout << \ << endl; SimpleCircle(); SimpleCircle(int radius); SimpleCircle(const SimpleCircle&S); ~SimpleCircle(); int GetRadius()const; int *itsRadius; private: return 0; } 从堆上分配一个int 型变量所占的字节内存,这个内存单元存放的整数值为6,然后让一个整型指针变量itsRadius指向它的地址。
C++作业6
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)