“21天养成好习惯”第一期-3

本文探讨了scanf和gets在输入字符串时的区别,通过实例展示了如何使用gets统计字符出现次数,并解释了为何scanf中无需使用取地址符。重点在于理解字符串在C语言中的指针概念和scanf的参数处理方式。
摘要由CSDN通过智能技术生成

今天做到一题---字符串统计,统计其中某些字符出现的次数。

在进行字符串的输入时,通过编程和翻阅课本,发现了scanf与gets输入字符串时的不同之处。 

 在做下面一道题时,我用scanf 和gets都可以把题目做出来。只是他们的方法稍微有点不同。课本上所说的不同之处,我理解了,但是没有相应的题目,我不知道自己是不是真的懂了。

下面是我用gtes写的代码

 这是我用scanf写的代码

 这里值得注意的是scanf里面不需要再加取地址符&了。(因为字符串C语言的字符串实际上是 字符数组.既然是数组, 那么数组头自然是一个指针.char str[] = {“abc”};这个str实际上是一个不可变的字符指针.scanf的参数要求传入指针. 之后按照格式化字符串对指针指向的地址赋值…str本身就是一个指针了, 所以不需要&str,如果&str, 那么得到是就是指针的指针,scanf并不只是对字符串不加 取地址运算符.例如 int arr[] = {1, 2, 3};scanf("%d", arr);这里对arr照样不需要取地址运算符, 因为arr是数组头, 本身就是一个指针.上面的语句是对arr数组的第一个元素赋值, 就是arr[0];当然也可以这么写.scanf("%d", &arr[0]);arr[0]是一个值, 并非指针, 于是对其取地址.对于字符串也可以这么写.
char str[3] ;scanf("%c", &str[0]);这是对str的第一个元素赋值也就是 str[0];)这一段话是我可网上的,自己没有学指针不是很懂,目前记住就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值