首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言小疑义

2013-03-12 
C语言小疑问#include stdio.hvoid fun(char m, char* n){n (char*)&mprintf(%s, n)}int main(){ch

C语言小疑问
#include <stdio.h>
void fun(char m, char* n)
{
n = (char*)&m;
printf("%s   ", n);
}
int main()
{
char c = 'a';
char *d = NULL;
fun(c, d);
printf("%s   ", d);
return 0; 
}
为什么结果为:指针n值正确,指针d还是为NULL?
[解决办法]
这里的指针是临时变量啊,无法改变d的值,参数是值传递
[解决办法]
void fun(char m, char* n),第二个参数传递的是d的副本,而不是d本身,当然不能改变d的值了,应该这样使用:
void fun(char m, char** n)//定义
fun(c, &d);//使用
[解决办法]
m是局部变量,&m没有意义,另外要改变d的指向,需要用char**n,并传入d的地址。
[解决办法]
函数调用参数传递都是“值传递”,也就是说把实参的副本赋给函数内的形参。
针对此问题来说,也就是函数调用时把实参d的值赋给形参n,然后n指向了第一个形参m(但是实参d不会发生改变,依然为NULL)。

热点排行