|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一道选择题
- #include<stdio.h>
- #include<string.h>
- void fun(char *s)
- {
- char a[7];
- s=a;
- strcpy(a,"look");
- }
- int main()
- {
- char *p=NULL;
- fun(p);
- puts(p);
- return (0);
- }
复制代码
程序运行结果为什么选不确定的值
本帖最后由 jackz007 于 2022-10-4 15:43 编辑
- #include<stdio.h>
- #include<string.h>
- void fun(char * s)
- {
- char a[7] ;
- s = a ;
- strcpy(a , "look") ;
- }
- int main(void)
- {
- char * p = NULL ;
- fun(p) ; // p = NULL,虽然作为参数被传入 fun(),但在 fun() 中被修改的只是 p 的副本
- puts(p) ; // fun(p) 并不能改变 p ,所以,p 仍然是 NULL,执行此句程序会直接奔溃。
- }
复制代码
楼主可以实际编译、运行一下这个程序
下面的代码才可以实现楼主所说的效果
- #include<stdio.h>
- #include<string.h>
- void fun(char ** s)
- {
- static char a[7] ; // a[] 必须定义为静态变量,否则,在函数 fun() 调用结束后,其所占内存会被即刻释放,无法看到效果。
- * s = a ;
- strcpy(a , "look") ;
- }
- int main(void)
- {
- char * p = NULL ;
- fun(& p) ; // 传入 fun() 的是指向 p 的指针,这样,fun() 对 p 的修改才可以得到保留
- puts(p) ;
- }
复制代码
|
|