成都创新互联网站制作重庆分公司

c语言定义函数两个变量,c语言定义函数两个变量的关系

5、使用C语言编写一个函数,用于交换两个变量的值(地址传递)。

不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下swap函数实现了交换两个整型变量值的功能:

醴陵网站建设公司创新互联,醴陵网站设计制作,有大型网站制作公司丰富经验。已为醴陵上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的醴陵做网站的公司定做!

#include stdio.h

// 交换给定指针指向整型变量的值。

// 参数:

// a - 指向第一个变量的指针

// b - 指向第二个变量的指针

void swap(int* a, int * b);

int main(int argc, int argv)

{

int a = 3, b = 5;

printf_s("交换前:a = %d, b = %d\n", a, b);

swap(a, b);

printf_s("交换后:a = %d, b = %d\n", a, b);

return 0;

}

// 交换给定指针指向整型变量的值。

// 参数:

// a - 指向第一个变量的指针

// b - 指向第二个变量的指针

void swap(int* a, int* b)

{

// 声明一个临时变量,保存第一个指针指向变量

// 的值。

// 其中 *a 是取出 a 指针指向变量的值

int temp = *a;

// 将 b 指针指向的值赋值给 a 指针指向变量

(*a) = (*b);

// 将临时变量 temp 中保存的 a 指针指向变量的值赋值给

// b 指针指向的变量。

(*b) = temp;

}

以上代码运行结果如下:

以下代码实现了使用宏定义作为模板,声明不同类型交换函数的功能,以下以声明double和float为例:

#include stdio.h 

// 声明一个函数代码模板,逻辑参考 swap(int* a, int* b)

#define DEF_SWAP_FUNC(Type) void swap_##Type(Type* a, Type* b) \

{ \

Type temp = (*a); \

(*a) = (*b); \

(*b) = temp; \

// 使用模板声明并实现一个 double 类型变量交换函数,函数名为 swap_double

DEF_SWAP_FUNC(double)

// 使用模板声明并实现一个 float 类型变量交换函数,函数名为 swap_float

DEF_SWAP_FUNC(float)

int main(int argc, int argv)

{

// double 类型数据交换

double da = 5.6, db = 3.5;

printf_s("double 交换前:da = %lf, db = %lf\n", da, db);

swap_double(da, db);

printf_s("double 交换后:da = %lf, db = %lf\n", da, db);

// float 类型数据交换

float fa = 3.4, fb = 6.8;

printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);

swap_float(fa, fb);

printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);

return 0;

}

运行结果如下:

编写C语言函数求主调函数中两个变量的和与积,要求函数返回值类型为void

c中函数都是值传递,所不同的是这个值可以使普通的数值也可能是存地址等。第一个传的是普通的值,非常常见。

第二个和第三个传递的值都是存地址即一个整形变量的地址。在函数部都可以通过这个地址来改变他所指的整形变量。他们之间的区别就是使用方式不一样。第三个函数可以直接使用变量a,而第二个函数中要对函数进行指针运算符才可以对其指向的变量进行操作。还有就是指针比引用要灵活一点,但是也易出错。引用比指针方便一点,但没有指针功能强大。

ps:c中没有引用,引用是c++中的。

函数的返回值如果比较简单,如整形,或者比较简单的结构体(像只有两个整形变量)等,就通过寄存器eax,edx等返回,如果比较复杂,如成员较多的结构体类型。就通过栈来返回,其中由eax给出返回值在栈中的地址,然后在主调函数中把值取出赋给变量。(这是我在网上看的一点资料和自己看一些反汇编代码得出的结论,仅供参考)

c语言中如何向子函数输入两个变量?

问的问题不够清楚。

可以在子函数中定义,并输入.

例子;

int max(void)

{

int x,y;

printf("input two number:\n");

scanf("%d%d",x,y);

if(xy)

return x;

else

return y;

}

C语言怎么同时定义两个整型变量

#include stdio.h

void main()

{

int a,b;

a=b=3;

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

}


本文名称:c语言定义函数两个变量,c语言定义函数两个变量的关系
分享地址:http://cxhlcq.com/article/dsichss.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部