我遇到了与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)