首页 > 试题广场 >

下列说法正确的是( &nbs...

[单选题]
下列说法正确的是(      )
#include "stdio.h"
#include "string.h"

void fun( char *s)
{
char t[7];
s=t;
strcpy(s, "example");
}

int  main()
{
char *s;

fun(s);
printf("%s",s);

return 0;
}
  • 输出结果为"example"
  • 输出结果为"exampl"
  • 程序编译时出现错误
  • 程序运行时出现错误
t数组只能存取7个字符包括‘\0’, 而example就已经7个字符了,加上结尾符号需要8个字符大小的数组,所以段错误是发生在内存不够导致的,而栈中返回最多乱码,不会发生段错误
发表于 2019-10-09 17:39:34 回复(0)
s=t,那么s的里面存的是栈中的地址,函数结束,释放,那么再次访问s的内存出错
发表于 2019-08-27 10:07:02 回复(0)
主要是fun函数结束t空间被回收了,存的地址根本没用
发表于 2019-10-16 10:41:07 回复(0)
fun函数没有返回值,只是定义了一系列操作,可能s只作为fun函数的局部变量,并没有带出来,那s可能是未初始化的char*,故运行时报错
发表于 2019-08-26 21:35:44 回复(0)