bash: 未预期的符号 `( 附近有语法错误_三:诡异的符号(未解决)

在C语言学习中,遇到程序打印出意外符号'♀',其ASCII码为12,对应换页符。尝试避免特定内存单元后,出现ASCII码13,对应回车键。多次实验发现类似情况,引发对内存管理的疑问。
摘要由CSDN通过智能技术生成

9aa4036af284ec85952fe5eb0516c688.png

今日在C语言学习的过程中,遇到了一个很奇怪的现象,那就是会打印出一个奇怪的符号。

#include <stdio.h>
int main()
{
    char s[20];
    memset(s, 'r', 8);
    puts(s);
    printf("%d %d ", s[0], s[8]);
    return 0;
}

这个程序的运行过程是这样的:

  1. 定义一个字符型的数组,然后用memset()函数初始化,用字符‘r’填了8个字节长度;
  2. 然后用puts()函数打印在屏幕上;
  3. 然后分别打印了字符数组的第一个元素和第九个元素s[8]的ASCII码;

运行结果是这样的:

6d536470a6497edb747297f0d604c5ca.png
运行结果1

看见了吗?它竟然没有按照预期的来运行,它自发地打印了一个‘♀’。我不明白那是什么东西或者为什么会打印那个东西。所以我查了一下那个东西的ASCII码,用十进制表示就是12。

3262bc5aff9713d16027b521f1e6c752.png
部分ASCII码表

它是一个换页符,惊不惊喜意不意外?

我当时怀疑这个东西是一个内存垃圾,然后我重新打开一个文件重新写了一个一模一样的程序。目的是避过这个奇怪的内存单元:

#include <stdio.h>
int main()
{
    char s[20];
    memset(s, 'r', 8);
    puts(s);
    printf("%d %d ", s[0], s[8]);
    return 0;
}

结果它的运行结果是这样:

5cd0e0c73c187c03422610717e785259.png
运行结果2

它又打印了一个东西,我看不见的东西,因为第九个单元s[8]的ASCII码是13。13是下面这个东西:

d8e87ab0307c0a6107e67c8f82f7913c.png
部分ASCII码表

回车键是不显示的,等等上一个是12,而这个是13,,会不会……

我又做了很多实验:

b8df3b164c5ee65d4834a366652b95a2.png
运行结果3.4.5.……

它们都是13。

这个真是有趣的问题,虽然现在我还不明白为什么是这样,但是总有一天我会明白的。

【完】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值