> 文档中心 > c++课本例题及知识点验证(更新于6_12

c++课本例题及知识点验证(更新于6_12

目录

知识点一:数组作为函数参数(形参重新开辟内存单元接收实参地址)

知识点二:指针类型的注意事项

知识点三:对象组的使用&类的静态成员

① 对象组的使用

② 类的静态成员 


知识点一:数组作为函数参数

  • 数组元素和数组名都可以作为函数的参数以实现函数之间数据的共享和传递;
  • 使用数组名传递数据时,传递的是地址
  • 形参数组和实参数组的首地址重合:形参数组重新开辟内存单元来接收实参数组的地址值,如图③。
  • 形参数组本质上就是接收实参地址的指针变量,它本身是有地址的,它所指向的空间内存放的是实参传来的地址。

【另】引用共享内存,数据互相可以修改;虽然数组形实参不共享单元,但是可以通过形参改变实参(因为本质是通过指针修改) 

运行到光标处来监视形参和实参的变化如图 ↓

//题目:求每一行元素之和#includeusing namespace std;void rowsum(int a[][4], int nrow)//计算二维数组每行元素的值的和——形参数组和实参数组首地址重合{for (int i = 0; i < nrow; i++){for (int j = 1; j < 4; j++)a[i][0] += a[i][j];}}int main(){int table[3][4]={ 1,2,3,4,2,3,4,5,3,4,5,6 };for (int i = 0; i < 3; i++){for (int j = 0;j < 4; j++){cout << table[i][j] << " ";}cout << endl;}rowsum(table, 3);//利用数组名作为函数的参数进行函数间数据传递与共享时传递的时首地址for (int i = 0; i < 3; i++){cout << "sum of the row " << i << " is " << table[i][0] << endl;}return 0;}

知识点二:指针类型的注意事项

1.指向常量的指针 

  • 声明指向常量的指针,不能通过指针改变所指对象的值,但是指针本身可以改变,可以指向另外的对象;
  • 使用指向常量的指针,可以保证指针所指的常量不被意外改变。

2.指针类型的常量 

  • 指针本身的值不能改变,指针指向的内容可变 

 3.void类型的指针

 一般情况下,指针的值只能赋给相同类型的指针,但void类型的指针可以存储任何类型的对象地址,经过使用类型显式转换,通过void类型的指针可以访问任何类型的数据。

知识点三:对象组的使用&类的静态成员

① 对象组的使用

对象数组的元素是对象,不仅具有数据成员,还具有函数成员。

声明一个一维数组的语句形式

类名 数组名[常量表达式];

每一个数组元素都是一个对象,通过对象访问其共有成员的一般形式:

数组名[下标表达式].成员名;

② 类的静态成员 

静态数据成员具有静态生存期;

静态数据成员不属于任何一个对象,因此可以通过类名对它进行访问

类名::标识符

在类的定义中仅仅对静态数据成员进行引用性声明,必须在文件作用域的某个地方使用类名限定进行定义性声明,此时也可以进行初始化,即类内定义类外初始化

 静态成员函数一般习惯于通过类名调用;

静态成员函数可以直接访问该类的静态数据和函数成员,访问非静态成员,必须经过对象名。

 

代码如下:

所含知识点:

  •  静态成员函数访问非静态成员必须经过对象名
  • 对象数组的使用

 

#includeusing namespace std;class A  //定义一个类来存放数字并输出{public:A(int x) :x(x) {}static void print(A a);private:int x;};void A::print(A a)  //形参为对象名{//cout << "a=" << x << endl;  //静态成员函数访问非静态成员必须通过对象名cout << "a=" << a.x << endl;}int main(){A a[3] = { A(2),A(3),A(4) };  //对象数组的使用a[0].print(a[0]);return 0;}

 更新于6_6

更新于6_8

更新于6_12

开发者涨薪指南 c++课本例题及知识点验证(更新于6_12 48位大咖的思考法则、工作方式、逻辑体系