今天做到一题---字符串统计,统计其中某些字符出现的次数。
在进行字符串的输入时,通过编程和翻阅课本,发现了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];)这一段话是我可网上的,自己没有学指针不是很懂,目前记住就行了。