【高效复习】C语言程序设计(UESTC) 黄迪明版 (第四章-第六章——数组和结构、指针、函数)

这篇博客详细介绍了C语言中数组、结构、指针和函数的概念与应用。讨论了二维数组的操作,字符数组的赋值,输入输出中的注意事项,以及字符串函数的使用。在指针部分,讲解了指针类型、定义与存储、运算以及数组指针。此外,还涉及了函数的使用,包括函数参数传递和函数指针。博客提供了丰富的例子和练习题,适合C语言学习者巩固知识。
摘要由CSDN通过智能技术生成

介绍数组和结构、函数。指针,以运算和存储(定义)为主线。这也是计算机这个黑盒子中的关键三环中的两环。(存储、运算、控制)

第四章 数组和结构

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、用结构体变量的引用变量作函数参数。

  1. 用结构体变量作函数参数。
#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;
}
  1. 用结构体变量的引用作函数参数
#include <iostream>
#include <string>
using namespace std;
struct Student
{
   
   int num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值