首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言参数宏定义与无参数宏定义

前两天上课,被JAVA老师问懵了,老师问:“你们学C语言,有没有写过带参的宏玩一玩”,说实话,我根本没听过什么带参的宏,我只用过宏定义,所以我下来一定要找个时间把这“带参的宏搞懂”,于是就有了这篇文章...C语言中宏定义分两种,无参的宏和参的宏 1.无参数的宏        无参数宏定义的一般形式为: #define name value//name是你起的名字,就跟起函数名一样,value是你要给这个名字赋予什么值...无参数的宏没什么好说的,但还是有些地方使用时要注意。 几点注意: 1. 在宏定义的#之前可以若干个空格、制表符,但不允许其它字符。...2.参数的宏        参数宏的定义形式一般为: #define name(参数1,参数2,....) sentence//sentencen表示语句 //示例: #define max(a,b...int d) {         int t;         t = c;         c = d;         d = t; } int main() {     int a,b,c,d,t

2.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言系列】为什么要学习C语言C语言哪些优势

    简单来说,C语言是计算机程序语言的基础,是实用的程序设计工具,学好C语言对你今后学习JAVA、C++、VB等可以打下良好的基础,因为这些语言大部分都是由C语言扩充或衍生而来的。...当然,如果想在Windows上开发图形接口,用MFC或C#、Java都比C好的多。尺有所短,寸有所长。每种语言自己适用的领域,C并不是万能的,但想成为程序设计高手,不懂C是万万不能的。   ...想学好学精C++,没有100学时是不够的,而我们现在选择的C语言都只有44课时的理论教学时间,面对如此丰富多彩的C世界,我已经颇感力不逮,许多基本内容都得靠学生自学了,哪还能奢望C++啊?...有时候,你的程序所需要的速度,只有C语言能做到。 5.如果你学习过C语言,你就能学习现在任何的高级编程语言。因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。...8.C语言是唯一一个向你阐述指针的本质的语言。而C#和Java干脆跳过了指针这个题目。可是指针确实使C语言变得更加强大。 9.找编程开发方面的工作时,C语言仍然是最普遍需要的语言

    8.3K130

    C语言之函数与参数

    C语言中的函数就是一个完成某项特定任务的一小段代码。这段代码是特殊的写法和调用方法的。C语言的程序其实是由无数个小的函数组合而成,也可以说:应该大的计算任务可以分解成若干个较小的函数完成。...在C语言中我们一般会见到两类函数: 库函数 自定义函数 1.库函数 C语言标准规定了一组函数,这些函数再有不同的编译器厂商根据标准进行实现,提供给程序员使用。...函数参数,函数的参数可以是void,明确表示函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。...:参数个数,每个参数的类型,形参的名字叫啥 二.参数 在函数的使用过程中,把函数的参数分为,实参和形参。...1.实参 在上述代码中,调用Add函数时,传递给函数的参数a和b,称为实际参数,简称实参。 实际参数就是真实传递给函数的参数

    8010

    C语言数组当参数传递

    在学习C语言的过程中遇到数组作为参数传递的问题 一维数组: #include int test2(int a[]){ for(int i=0;i<5;i++){ printf...我们在这里还可以用)*(p+i)来输出数组中的值 } } int main(){ int a[5] = {1,2,3,4,5},*p; p = a; test1(p); } 一般来数参数的传递是值传递...因为,a是函 数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址多大的数据存储 空间,这里只是告诉函数:一个数据 空间首地址 ),所以,sizoef(a)的结果是指针变量...我可以在初始化数组的地方获取到数组的长度,作为参数传递过来: int test2(int a[],int n){ for(int i=0;i<n;i++){ printf("%d ",a[i]);...二维数组: 二维数组作为参数传递是后我们不可以像以为数组那样直接,如: void test1(int a[][]){ for(i = 0; i < 5; i++){ for(j = 0; j

    2.1K30

    C语言函数求参数顺序问题

    首先,看一道某年全国二级C语言考试的选择题。...问以下代码输出结果 int func(int a,int b) { int c; c=a+b; return c; } main() { int x=6,r;...对于函数的参数,在计算的时候是按照从右往左的顺序进行的。 对于函数func,先求右边x+=2参数,返回x=8,然后计算结果。也就是传递给形参的两个值都是8,返回值为16。...printf("%d,%d,%d\n",++a,a--,++a); printf("%d\n",a); return 0; } 根据上面讲到的内容,你要想到的是printf也是函数,参数计算也要按照从左往右...但下一步是先让a的值-1,再计算左边的参数,还是别的呢? 根据运行结果,我们知道是先计算左边参数,a的值+1输出104,然后用完了以后a的值-1。 最后一行输出103也验证了是最后执行a的值-1。

    2.5K10

    C语言函数不定参数实现方式

    函数如何实现不定参数: 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况 ,提出了指针参数来解决问题。...(1)va_list 定义了一个指针arg_ptr, 用于指示可选的参数. (2)va_start(arg_ptr, argN) 使参数列表指针arg_ptr指向函数参数列表中的第一个可选参数,argN...是位于第一个可选参数之前的固定参数, 或者说最后一个固定参数.如有一va 函数的声明是void va_test(char a, char b, char c, ...), 则它的固定参数依次是a,b,c..., 最后一个固定参数argN为c, 因此就是va_start (arg_ptr, c). (3)va_arg(arg_ptr, type) 返回参数列表中指针arg_ptr所指的参数, 返回类型为type...并使指针arg_ptr指向参数列表中下一个参数.返回的是可选参数, 不包括固定参数. (4)va_end(arg_ptr) 清空参数列表, 并置参数指针arg_ptr无效.

    2.4K40

    C语言函数参数详解】——实际参数(实参)&形式参数(形参)

    这篇文章我们一起学习一下函数的参数,函数的参数分为实参和形参。 一.什么是实际参数(实参) 首先我们来学习实参,什么是实参呢? 实际参数简称“实参”。...在调用参函数时,函数名后面括号中的参数称为“实参”,是我们真实传给函数的参数,实参可以是:常量、变量、表达式、函数等。...(形参) 那什么是形式参数呢?...形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。 形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。...形参在函数调用过程中才实例化(分配内存单元) 函数调用之前,形参还未创建 函数调用过程中,形参才被实例化 函数调用结束,形参生命周期结束,被销毁 三.形参与实参的关系 了解了什么是函数的形参和实参,那两者之间什么关系呢

    4.2K10

    C语言】va_list(可变参数处理)

    C 语言中的 va_list 类型允许函数接受可变数量的参数,这在编写需要处理不定数量参数的函数时非常有用。...一、va_list的用法 va_list 是一个指向参数列表的指针,它允许函数处理不定数量的参数。...下面是这些宏的简要介绍: va_start:初始化 va_list 类型的变量,使其指向参数列表的起始位置。 va_arg:获取参数列表中的下一个参数,并将指针移动到下一个参数。...i++) { sum += va_arg(args, int); // 通过va_arg宏获取参数列表中的下一个参数,并将指针移动到下一个参数 } va_end...三、结语         va_list 类型是 C 语言中处理可变参数的重要工具,它允许函数处理不定数量的参数。通过 va_list,我们可以编写更加灵活和通用的函数,处理不同数量的参数

    70010

    C++为什么参数依赖查找(ADL)?

    明确命名空间的,这个命名空间在ADL的过程中被查找,因此最终找到了 std::sort 的函数声明。...为什么C++会有ADL为什么在限定名称查找和非限定名称查找之外,C++还要提供参数依赖查找这样的机制呢?...符合C++的设计哲学:C++语言的设计哲学之一是提供强大而灵活的工具,以支持各种编程范式。ADL是这一哲学的体现,它提供了一种自然而直观的方式来处理与类型相关的操作。...历史原因:ADL是C++早期版本中就已经存在的特性,它随着语言的发展而逐渐演化,成为C++中不可或缺的一部分。...参考引用 关于"在C++中确定一个名称"这一相关话题,本文仍有一些未提及的场景,比如模板参数推导、重载解析等,可以参考:

    10410

    C语言函数参数是如何传递的?

    前言 我们可能听过C语言中的传值和传指针,在其他语言中,也有传引用一说,那么他们到底什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。...传值 我们在初学C语言的时候就被老师教过,下面的方式是无法交换a和b的值的: #include void swap(int a,int b) { int temp = a; a = b; b = temp...为什么又有传值,又有传指针 看到这里,不知道你是否会疑惑,为什么给函数传递参数的时候,一会是传值,一会是传指针呢?为什么传指针就能改变参数的值呢?实际上,C语言里,参数传递都是值传递!...裙里大量学习资料,大神解答交流问题,每晚都有免费的直播课程 再看传指针 如果是为指针p申请一段内存,下面的代码能达到目的吗?...c语言1232_副本_副本.jpg 可配合下面的图进行理解: 总结 本文总结如下: 函数的形参都是原数据的“副本”,因此在函数内无法改变原数据 函数中参数都是传值,传指针本质上也是传值 如果想要改变入参内容

    4.1K11
    领券