| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:这个问题有人知道吗??
取消只看楼主 加入收藏
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
结帖率:76.92%
收藏
已结贴  问题点数:10 回复次数:1 
这个问题有人知道吗??
一般来说,函数的非指针参数只是供计算而已。对参数的本身值并不会改为。例如:
#include "stdio.h"
/**************定义函数************/
void change(int num){
num=100;
}

main()
{
int num=10;
printf("num=%d\n",num);/**调用函数前数值**/
change(num);/**************调用函数************/
printf("num=%d\n",num);/**调用函数后数值**/
getch();
}
此时两次显示的num的数值并不会改变,都是:num=10。

如果要改变参数的话,可以用这样:

#include "stdio.h"
/**************定义函数************/
void change(int *num){
*num=100;
}

main()
{
int num=10;
printf("num=%d\n",num);/**调用函数前数值**/
change(&num);/**************调用函数************/
printf("num=%d\n",num);/**调用函数后数值**/
getch();
}
由于这个调用的是地址(&num),因此,两次显示的数值便会改变。调用函数前:num=10;调用函数后数值:num=100;
这是因为它赋值时采用了地址的形式:*num=100;这个不难理解!但是如下是为什么:

#include "stdio.h"

/**************定义函数************/
void change(int num[]){

num[0]=100;

}

main()
{
int num[1]={10};

printf("num[0]=%d\n",num[0]);/**调用函数前数值**/

change(num);/**************调用函数************/

printf("num[0]=%d\n",num[0]);/**调用函数后数值**/

getch();
}
这里的赋值并没有采用地址的方式进行:num[0]=100;但是它却还是改变了原来的数值,这是为什么??
难道num[0]代表的也是地址??

有点长,希望有人给出回答。谢谢!












呵呵!

[ 本帖最后由 mashrb 于 2010-7-1 22:28 编辑 ]
2010-07-01 22:26
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
谢谢你,明白了。把形参看作另外的一个变量,在调用函数时,只是往这个形参赋值。这点很重要。还有个问题,下次现问!
2010-07-02 12:40
快速回复:这个问题有人知道吗??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016198 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved