【C语言】案例四十六 点名册(一)

案例描述
案例要求编程实现一份基于指针的点名册,记录学生的姓名,并能实现学生姓名的输出;点名册中的学生姓名由多个字符组成,点名册中包含不止一名学生。

案例分析
将每个学生视为一个字符数组,则点名册中的内容可以视为多个字符数组的集合。如若每个学生姓名字节数都相同,那么点名册可以视为一个二维数组,但实际上,学生姓名字节可能各不相同。所以,需要考虑的问题有两个:

  1. 如何使用不同长度的字符数组存储学生的姓名
  2. 如何将多个存储学生姓名且长度不同的字符数组联系起来,使之成为一个整体
    考虑到学生姓名逐条储存,类似于二维数组的存储模式,但二维数组中的每行和每列的字节数相同,若使用二维数组存储,必然会造成空间的浪费,那么应该如何解决这个问题呢?

必备知识

1,通过指针引用字符串
字符串由若干个字符组成,字符型变量作为C语言中一种基础的变量类型,与其他变量一样,都会占用存储空间。我们都已经知道指针的本质就是地址,既然字符串中的字符占用存储空间,那么显然他也可以通过指针进行操作。
在C语言中,字符串一般存放在字符数组中,对字符串进行操作有两种方式:

  1. 使用数组名加下标的方式获取字符串中的某个字符,使用数组名与格式控制符“%s”输出整个字符串。具体示例如下:
char s[] = "this is a string";
printf("%c\n",s[3]);  //输出字符数组下标为3的位置上存储的字符
printf(<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值