c语言函数的形参取地址 c语言函数的形参可以是指针或引用

关于c语言形参实参传地址传数值的问题

C语言中函数的参数传递(值传递,地址传递,引用传递)

成都创新互联公司专注于云阳企业网站建设,成都响应式网站建设公司,商城建设。云阳网站建设公司,为云阳等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

/* ^_^ 2015年11月3日09:58:03 辨析 C语言中函数的参数传递*/

//值传递 其实质是将数值传递给其他俩个变量,自己变量里面的值并没有改变----所以说是值传递。

# include stdio.h

void exchange();

int main (void)

{

int x,y;

x=3;

y=4;

exchange(x,y); //这就是典型的值传递,它把X,Y的值传递给变a和b;

printf("%d %d\n",x,y); //a,b的值进行交换,但是变量X,Y里面的值并没有交换。

return 0;

}

void exchange(int a,int b)

{

int temp;

temp =a;

a=b;

b=temp;

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

}

//地址传递 (提到地址二字,应该始终明确,C语言中的地址是基于指针的,所以地址传递是一定会用指针的)

# include stdio.h

void exchange();

int main (void)

{

int x,y;

x=3;

y=4;

exchange(x,y); //这就是典型的地址传递,它把X,Y变量地址传递给指针a和b;

printf("%d %d\n",x,y); //*a,*b的值进行交换,就是找到a,b对应的地址交换地址里面的值,其实也就是

//找到 a,b值进行交换。

return 0;

}

void exchange(int *a,int*b)

{

int temp;

temp =*a;

*a=*b;

*b=temp;

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

}

C语言指针函数的问题。 为什么这道题fun函数不会改变变量的值? 函数形参不是取得地址吗?

因为交换的并不是值,而是指针。而指针本身是传的值。意思就是在fun中虽然a指向了y,b指向了x但是a、b只是p和q的副本。如果要交换变量值应该用int c,*c=*a,*a=*b,*b=*c。

C语言中如何以结构体变量的地址作为函数形参,以便将指向结构体变量的指针传递给它?

C语言中,所有的变量都存储在内存中,可以通过运算符获得变量的内存地址,函数调用时,只需要把普通变量前加上符号,就可以达到传递变量地址的目的。

例如:

定义一个结构体类型

struct Yearmonthday

int year, month, day;

};

定义相关函数,参数类型指定为结构体类型指针

void input(struct Yearmonthday *p1) //函数形参p1是结构体指针类型

{

printf("请输入年,月,日:");

scanf("%d,%d,%d",p1-year,p1-month,p1-day);

}

在主函数中定义一个结构体变量,调用相关函数,传递变量地址

int main()

struct Yearmonthday ymd;

input(ymd); //传递变量地址,以便带回数据

printf("date=%d/%d/%d\n", ymd.year, ymd.month, ymd.day ); //输出结果

return 0;

}

C语言中实参和形参分别存放在内存的什么位置?

形参只是一个符号,不会分配具体的空间的..当函数被调用的时候,具体给出的参数,也就是实参,其实是一份拷贝..它的内存空间在该函数的堆中进行分配.比如 定义函数 int add(int ,int); 在主函数中 定义变量 int x, y..调用函数 add(x, y);那么在函数add的堆中会分配出空间,来保存实参x y的拷贝..而主函数中的 x y 是在主函数的堆中保存的... 不晓得有没有说明白..呵呵


文章名称:c语言函数的形参取地址 c语言函数的形参可以是指针或引用
网站网址:http://csdahua.cn/article/ddcosdg.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流