- 博客(3)
- 收藏
- 关注
原创 %s为什么需要字符串首地址,而不是字符串本身
例如,字符串"hello"在内存中存储为连续的字符hello,并以\0(空字符)作为结束标志。因此,字符串实际上是一个字符数组,而数组在内存中是通过其首地址来标识的。当你传递一个字符串给printf函数时,你实际上传递的是这个字符数组的首地址,即字符串的起始位置。return 0;在这个例子中,str是一个字符数组,存储了字符串。当使用printf函数时,通过%s格式化输出字符串,实际上传递的是str的地址,即字符数组的首地址。
2025-05-09 11:56:53
440
原创 字符指针指向字符串的方法(转载于酷课自主学习平台,侵删)
分析:以上定义的指针p未指向任何有效的存储空间,称为指针悬空,此时gets( )输入的字符串将无处存放,解决的办法是必须将p指向已分配的有效存储空间。通常将指针指向字符串的首地址,利用指针的后移可以指向后续字符。以上定义了字符数组a并为之初始化字符串"I am happy",然后定义了字符指针p,将p初始化为指向数组a的首地址,即指向了字符串的第一个字符 'I'。分析:指针的类型决定了其所指存储单元的类型,字符串中的每个字符都是char型的,因此指向字符串的指针必须是char型的。把字符串的首地址赋予s。
2025-05-09 11:01:26
1376
原创 C Primer Plus 3.11 编程练习 2题
上述问题主要的原因是因此char类的变量只有8位,而转换声明%d对应的是int类型,是16/32位,即便是换成short int的转换声明%hd,也最少是16位,所以超过了变量ch的存储空间,就会提示上述警告。我目前正在学习C语言,在这里分享一下我在学习中遇到的问题和看法,如果你有更好的看法或对我的文章有什么疑问,可以在底下留言告诉我。输入一个ASCII码的值(如:66),然后打印输入的字符。输入66继续运行程序会提示异常。参考习题答案,源程序如下。
2025-03-22 15:03:40
287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅