小编JGu*_*Gut的帖子

C - 使用strlen制作数组错误大小的数组初始化

我遇到了与char数组初始化的意外交互.

初始化大小为strlen(char parameter [])的char []时,新初始化的char []太大.我不确定是什么原因造成的.

int main(void)
{
    char myString[] = { " " };
    foo( myString );
}    


int foo( char str[] )
{
    char testString[ strlen( str ) ];
    printf( "Length of testString: %lu\n", strlen( testString ) );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行foo时,输出是

Length of testString: 6 
Run Code Online (Sandbox Code Playgroud)

当我期待它是1.


更奇怪的是,当我在testString初始化之前向foo添加一个print语句时,输出似乎神奇地修复了自己:

int foo( char str[] )
{
    printf( "Length of str: %lu\n", strlen( str ) );
    char testString[ strlen( str ) ];
    printf( "Length of testString: %lu\n", strlen( testString ) …
Run Code Online (Sandbox Code Playgroud)

c arrays string initialization

4
推荐指数
1
解决办法
605
查看次数

标签 统计

arrays ×1

c ×1

initialization ×1

string ×1