这个问题有人知道吗??
一般来说,函数的非指针参数只是供计算而已。对参数的本身值并不会改为。例如:#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 编辑 ]