不懂!希望得到具体的解释

时间:2008-05-09 10:19:01   来源:论坛整理  作者:  编辑:chinaitzhe
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



#include<stdio.h>

void func(int); 

void main() 

{ int a=1; 

  func(a); 

  printf("\n%d\n",a); 

} 

void func(int b) 

{ b=10; 

} 


为什么输出的是1而不是10,为什么这样赋值会不成功呢????
网友回复:#include <stdio.h>
void func(int);
void main()
{ int a=1;
func(a);
printf("\n%d\n",a); /*这里输出的是a. a没有变化啊 所以还是1,*/
}
void func(int b)
{ b=10;
}


这道题题目没错吧?
网友回复:传值还是传址的问题

a 和 b 是两个变量,func 改变的是临时变量 b 的值,a 值无变化
网友回复:想变a的值?
两种方法:
(1)#include <stdio.h>
void func(int);
void main()
{ int a=1;
func(a);
printf("\n%d\n",a);
}
void func(int &b)
{ b=10;
}

(2)#include <stdio.h>
void func(int);
void main()
{ int a=1;
func(&a);
printf("\n%d\n",a);
}
void func(int *b)
{ b=10;
}
网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





#include<stdio.h>

void func(int); 

void main() 

{ int a=1; 

  func(a); 

  printf("\n%d\n",a); 

} 

void func(int b) 

{ b=10; 

} 


这里是实参变量a和形参变量之间的数据传递是单向的值传递的方式。对于临时变量,函数调用开始时为之分配动态存储空间,
函数结束后,自动释放这个临时的动态存储空间。只是临时变量b的值由1变到了10,而变量a的值并未改变。

C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





#include<stdio.h>

void func(int*); 

void main() 

{ int a=1; 

  func(&a); 

  printf("\n%d\n",a); 

} 

void func(int *b) 

{ *b=10; 

} 


用指针变量作为函数的形参,可以改变实参的值
网友回复:认真看一下书。不要急!
那个是传值的,不是引用或指针的,当然是那样了,楼主也可以记住是那样就行了。
网友回复:ls的你确定你的code是对的?
网友回复:我意思是3楼的。。
网友回复:写错了一步。
b=10; ->*b = 10.
网友回复:我晕,再仔细看一哈,还有n个问题。
void func(int);->void func(int&); void func(int*)

C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



#include <stdio.h>

#include <conio.h>

void func(int&);  

int main()  

{ int a=1;  

  func(a);  

  printf("\n%d\n",a);  

  getch();

  return 0;

}  

void func(int &b)  

{ b=10;  

}



#include <stdio.h>

#include <conio.h> 

void func(int*);  

int main()  

{ int a=1;  

  func(&a);  

  printf("\n%d\n",a);  

  getch();

  return 0;

}  

void func(int *b)  

{ *b=10;  

}




网友回复:值传递问题 建议楼住好好看看书
网友回复:
void func(int); 函数没有返回值,最后你输出a,得到的当然还是1了

网友回复:晓得咯~~~谢谢大家哈
关键字:不懂,希望,得到,具体,解释,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面