c语言中swap 是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中swap 是啥意思?相关的知识,希望对你有一定的参考价值。

swap函数一般是一个程序员自定义函数。通常是实现两个变量数值的交换。

1.swap1(x,y);

printf("swap1: x:%d,y:%d\\n",x,y);//形参传值,不能交换,实际传过去是拷贝的一份,没改变主函数中x,y。

2.swap2(&x,&y);

printf("swap2: x:%d,y:%d\\n",x,y);//不能交换,函数中只是地址交换了下,地址指向的内容没有交换。

3.swap3(&x,&y);

printf("swap3: x:%d,y:%d\\n",x,y);//能交换,地址指向的内容进行了交换。

扩展资料

C语言是一门通用计算机编程语言,广泛应用于底层开发。

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

参考资料C语言_百度百科

参考技术A

swap的意思是交换两个变量的值

但是在c语言中没有这样的库函数,需要自己写

写法如下:

void swap(int *a,int *b)//表示传入指针,这样就可以修改变量的值

    int t=*a;*a=*b;*b=t;

然后使用方法:

#include<stdio.h>
void swap(int *a,int *b)

    int t=*a;*a=*b;*b=t;

int main()
    int a,b;
    scanf("%d%d",&a,&b);
    swap(&a,&b);//传入时要传指针,&是取址符
    printf("a = %d,b = %d\\n",a,b);
    return 0;

输入:2 3

输出a = 3,b = 2

参考技术B 可以是库函数,你自己也可以进行自定义,就是交换两个数的值,swap的中文翻译就是交换的意思,我c语言中,有很多函数名都是见名知意,你自己编程是也要注意这点 参考技术C 定义的函数。比如用来交换两个数位置。
void swap(int a,int b)

int temp;
temp=a;
a=b;
b=temp;

在对数排序时常用到。
参考技术D 一般是交换两个变量的值的函数名。
如void swap(int &a, int &b)
int t=a;a=b;b=t;

"CONST func(arg);" 是啥意思在C语言中是啥意思?

【中文标题】"CONST func(arg);" 是啥意思在C语言中是啥意思?【英文标题】:What does "CONST func(arg);" mean in C language?"CONST func(arg);" 是什么意思在C语言中是什么意思? 【发布时间】:2011-08-27 01:11:49 【问题描述】:

This 是一个 c 程序,演示了 libxml2 库的一些基本用法。下面是从main函数中引用的:

LIBXML_TEST_VERSION example1Func(argv[1]);

这句话代表什么?

我只能说 LIBXML_TEST_VERSION 显然是一个常量,然后是一个函数调用,该函数什么也不返回(void)。但我不知道这句话的整体含义。

【问题讨论】:

我现在感到非常抱歉,因为我链接到的原始程序中的行实际上是两行。我想这是我的 IDE 的自动缩进系统做出了错误的决定。所以这个问题其实是没有意义的。 不过,你们的速度令人印象深刻! 没问题 - 今天我们都了解到:所有大写符号不一定都是常量,你不应该相信代码的格式,以及 LIBXML_TEST_VERSION 宏的作用。 ;-) 【参考方案1】:

LIBXML_TEST_VERSION 不是常量 - 它是一个宏 - 请参阅此处的文档:

Macro: LIBXML_TEST_VERSION

#define LIBXML_TEST_VERSION
Macro to check that the libxml version in use is compatible with the version the software has been compiled against

这也与调用example1func() 无关 - 代码应如下所示(cmets 是我的):

LIBXML_TEST_VERSION    // test libxml version

example1func();        // call example1func

【讨论】:

+1:这种宏很烦人,但正是因为这种混乱。如果宏没有定义结尾的;,我会更喜欢它,这至少会强制您使用; 明确地为实例添加后缀,从而减少视觉混乱。 @Oli:确实 - 通常多行宏应该包含在 do ... while (0) 中以允许使用终止分号【参考方案2】:

看起来LIBXML_TEST_VERSION 是一个扩展为一个或多个语句的宏。从Google code search 看来,定义类似于:

#define LIBXML_TEST_VERSION xmlCheckVersion(20703);

20703 是您正在编译的任何版本。

此语句独立于对example1Func() 的调用。

【讨论】:

【参考方案3】:

在 ALL_UPPERCASE 中命名 C 预处理器宏是标准约定。正如您所建议的,这通常用于编译时常量。但是,还有其他用途。

现在来看你的例子。原始出处是这样的(cmets 是我的):

LIBXML_TEST_VERSION    /* line 1 */
example1Func(argv[1]); /* line 2 */

第一行是一个 C 宏。第二行是函数调用。正如您的问题所暗示的那样,这两者不是同一陈述的一部分。不幸的是,LIBXML_TEST_VERSION 的定义方式在末尾不需要分号;如果是这种情况,就不会混淆这两行是否属于同一语句。

如果您想知道LIBXML_TEST_VERSION 到底是什么:

Macro: LIBXML_TEST_VERSION

#define LIBXML_TEST_VERSION
Macro to check that the libxml version in use is compatible
with the version the software has been compiled against

【讨论】:

以上是关于c语言中swap 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

关于C 语言中swap的问题

c语言中规定 赋值运算符的左边必须是啥?

c语言swap指针

c语言中,while(1)是啥意思?

C语言里%zd是啥意思?

C语言中的序列点是啥意思