注册 登录
编程论坛 C语言论坛

数组的大小问题

奇数层 发布于 2022-09-09 09:06, 874 次点击
只有本站会员才能查看附件,请 登录

为什么会这样呢?我的arr1不是只有两个元素在里面吗?
2 回复
#2
apull2022-09-09 09:13
c的字符串以'\0'结尾。
因此arr[3]实际上是arr[3]={'a','b','\0'}
而arr1则缺少'\0',在用%s输出的时候会一直读取内存,直到遇到'\0'才会停止。
#3
rjsp2022-09-09 11:26
apull 说得对,我只是补充一下

程序代码:
#include <stdio.h>

int main( void )
{
    char a[3] = "ab";
    char b[2] = { 'a', 'b' };
    printf( "%s\n", a );
    printf( "%.2s\n", b );
    printf( "%.*s\n", 2, b );
}
1