案例描述
案例要求编程实现一份基于指针的点名册,记录学生的姓名,并能实现学生姓名的输出;点名册中的学生姓名由多个字符组成,点名册中包含不止一名学生。
案例分析
将每个学生视为一个字符数组,则点名册中的内容可以视为多个字符数组的集合。如若每个学生姓名字节数都相同,那么点名册可以视为一个二维数组,但实际上,学生姓名字节可能各不相同。所以,需要考虑的问题有两个:
- 如何使用不同长度的字符数组存储学生的姓名
- 如何将多个存储学生姓名且长度不同的字符数组联系起来,使之成为一个整体
考虑到学生姓名逐条储存,类似于二维数组的存储模式,但二维数组中的每行和每列的字节数相同,若使用二维数组存储,必然会造成空间的浪费,那么应该如何解决这个问题呢?
必备知识
1,通过指针引用字符串
字符串由若干个字符组成,字符型变量作为C语言中一种基础的变量类型,与其他变量一样,都会占用存储空间。我们都已经知道指针的本质就是地址,既然字符串中的字符占用存储空间,那么显然他也可以通过指针进行操作。
在C语言中,字符串一般存放在字符数组中,对字符串进行操作有两种方式:
- 使用数组名加下标的方式获取字符串中的某个字符,使用数组名与格式控制符“%s”输出整个字符串。具体示例如下:
char s[] = "this is a string";
printf("%c\n",s[3]); //输出字符数组下标为3的位置上存储的字符
printf(<