即使后面的内存被分配出去了,也可以通过指针偏移访问,不会报错
【 在 BirdFans 的大作中提到: 】
: 标 题: Re: 请教一个字符串的问题
: 发信站: 水木社区 (Wed Jul 20 15:19:21 2022), 站内
:
: 最后的结束标志是需要你自己设的,不是系统自动帮你设。
:
: a是一个内存地址而已,后面字符串有多长,其实是不确定的,如果你不手动设置结束符,可能给你打印出几百个字符
:
: 你这里刚好打印出12345,是因为5后面刚好是结束符\0,因为内存使用率比较低,内存里面大部分字节都是\0,所以一般也不会出现打印出一大串的情况
:
: 还可以引申出另一个问题:你这个a数组最大下标应该是4,但是实际上你写程序打印a[5],大概率程序也不会崩溃,因为这个字节刚好没被申请使用,这么访问并不会报错
:
: 【 在 shouge111 的大作中提到: 】
: : 变量a长度是5,那么根据教材,它只能存储1234,最后一个存储单元应该存储字符串结束标志\0。
: : 但是实际运行,a存储了12345.这是怎么回事呢?printf打印也是打印了12345
: : #include<stdio.h>
: : ...................
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 113.108.41.*]
--
FROM 223.101.89.*