首页 > 试题广场 > 下列说法正确的是(   &nb
[单选题]
下列说法正确的是(      )
#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"
  • 输出结果为"烫烫烫烫"
  • 程序编译时出现错误
  • 程序运行时出现错误
strcpy 结束的标志是遇到\0,并且会把\0加进去,所以就需要8个字节的空间,而t只申请了7个字节的空间
发表于 2019-09-09 09:47:16 回复(0)
一点点拙见,希望大牛改错 如果考虑野指针的问题,char *s报错,如果忽略野指针的问题的话,我认为s=t的意思是指针s指向数组t的首地址,后一句调用strcpy又将指针s指向常量区example的首地址e,所以这里面是没有报错的。虽然example占用8个字节长度,但并没有放到数组t中。
发表于 2019-09-11 11:39:28 回复(0)