可能重复:
为什么我没有收到“分段错误”?
为什么这段代码有效?如果第一个元素只包含第一个字符,那么其余字符存储在哪里?如果这是可能的,我们为什么不使用这种方法呢?
注意第 11 行:静态字符 c[1]。使用一个元素,您可以存储任意数量的字符。当稍后指向它时,我使用静态来使内存位置在函数之外保持活动状态。
#include <stdio.h>
void PutString( const char* pChar ){
for( ; *pChar != 0; pChar++ )
{
putchar( *pChar );
}
}
char* GetString(){
static char c[1];
int i = 0;
do
{
c[i] = getchar();
}while( c[i++] != '\n' );
c[i] = '\0';
return c;
}
void main(){
PutString( "Enter some text: " );
char* pChar = GetString();
PutString( "You typed the following:\n" );
PutString( pChar );
}