1、
#include"stdio.h"
#include"iostream"using namespace std;
int main()
{
char a[4]={'l','o','v','\0'};printf("%s",a);
system("PAUSE");
return 0;
}
2、
#include"stdio.h"
#include"iostream"
using namespace std;
int main()
{
char a[4]={'l','o','v','e'};printf("%s",a);
system("PAUSE");
return 0;
}//而用for循环控制的输出则是正常的。
3、#include"stdio.h"
#include"iostream"
using namespace std;
int main()
{
char a[10];
scanf("%s",a);
printf("%s",a);
system("PAUSE");
return 0;
}
当scanf中间出现空格时,输出发生字符串截断,后面无论多少字符不再计入;
当输入十个(要求写入‘/0’)或更多的字符时,发生溢出;
当输入十个以下字符时,正常结束。
若定义为char *a,则显示a未初始化错误;
若定义为char *a为NULL(企图写地址0,这个地址在进程的地址空间是被操作系统使用的,应用程序不得非法入侵)或为“”(只读区域),则都会显示异常。
参考:http://bbs.csdn.net/topics/390284078