介绍数组和结构、函数。指针,以运算和存储(定义)为主线。这也是计算机这个黑盒子中的关键三环中的两环。(存储、运算、控制)
第四章 数组和结构
4.1数值数组:
二维数组a[i][j],除了行与列的解释,还可以i代表第i个一维数组,j代表一维数组中第j个元素。
4.1.1
运算:(1)二维数组不可以缺省列的个数。int a[][3]={1,2,3,4,5,6}就是可行的赋值的,区别于,函数的形参与实参中,第二维
必须相同int arry[][4]。
(2)对一维数组而言,a是数组名,可视为列指针,a+1就是跳一列。
(3)对二维数组而言,可视为行指针,a+1就是跳一行。a[0]、a[1]这些都应该视为列指针。
(4)a是地址常量,不可以a++或者a=a+2;二维的a[0]、a[1]也是不可以进行赋值操作,都是地址常量。
4.2字符数组
赋值:(1)字符赋值char s[5]={‘a’,‘a’,‘a’,‘a’,‘a’};(2)字符串常量赋值char s[5]=“aaaaa”;或char s[]=“aaaaa”;
未赋值部分默认为’\0’,ASCII为0;
4.3输出输入
注:
(1)gets可以读取空格,但是scanf不可以;puts自带换行功能,输出一个字符串后就会换一行。
(2)改错题中,常出现,为加’\0’作为字符串结束标志。
(3)对于s[]和s[n],可以通过修改’\0’来增加字符数组长度。
(4)对于s[n],只可以放n-1个字符。
4.3.1 字符串函数
注:
(1)结构体中范式没有明确初值的成员,都默认为0;
(2)atoi、atof装换字符串为整数/浮点数
(3)优先级的细节,++p->age,(++p)->age,&p->age,第一个是age++;第二个是p++,第三是age的地址。
4.4 结构体与函数/指针
注:改错题中,会出现结构体定义结尾没有‘;’,do…while();也是!
将一个结构体变量中的数据传递给另一个函数,有下列3种方法:
1、用结构体变量名作参数。一般较少用这种方法。
2、用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
3、用结构体变量的引用变量作函数参数。
- 用结构体变量作函数参数。
#include <iostream>
#include <string>
using namespace std;
struct Student//声明结构体类型Student
{
int num;
char name[20];
float score[3];
};
int main( )
{
void print(Student); //函数声明,形参类型为结构体Student
Student stu; //定义结构体变量
stu.num=12345; //以下5行对结构体变量各成员赋值
stu.name="Li Fung";
stu.score[0]=67.5;
stu.score[1]=89;
stu.score[2]=78.5;
print(stu); //调用print函数,输出stu各成员的值
return 0;
}
void print(Student st)
{
cout<<st.num<<" "<<st.name<<" "<<st.score[0]
<<" " <<st.score[1]<<" "<<st.score[2]<<endl;
}
2)用指向结构体变量的指针作实参在上面程序的基础上稍作修改即可。
#include <iostream>
#include <string>
using namespace std;
struct Student
{
int num; string name; //用string类型定义字符串变量
float score[3];
}stu={
12345,"Li Fung",67.5,89,78.5}; //定义结构体student变量stu并赋初值
int main( )
{
void print(Student *); //函数声明,形参为指向Student类型数据的指针变量
Student *pt=&stu; //定义基类型为Student的指针变量pt,并指向stu
print(pt); //实参为指向Student类数据的指针变量
return 0;
}
//定义函数,形参p是基类型为Student的指针变量
void print(Student *p)
{
cout<<p->num<<" "<<p->name<<" "<<p->score[0]<<" " <<
p->score[1]<<" "<<p->score[2]<<endl;
}
- 用结构体变量的引用作函数参数
#include <iostream>
#include <string>
using namespace std;
struct Student
{
int num