【C语言中的宏定义】教程文章相关的互联网学习教程文章

c语言中的#ifndef、#def、#endif等宏是什么意思

#ifndef、(或者#ifndef)、#def、#endif等宏这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已...

C语言中数据的两种属性及static的作用

C语言中数据有两种属性:数据类型和存储类别。数据类型定义了数据格式(长度),存储类别定义了数据的作用域和生命期。1.变量的声明1.1变量的声明的一般形式:存储类别 数据类型 变量名;数据类型以int为例:自动变量:auto int i;//自动变量是局部变量局部变量:在函数内部定义的变量,局部变量缺省存储类别时就是自动变量 作用域:从定义开始到函数结束。生命期:从函数调用开始到函数推出为止。外部变量/全局变量:在函数外部定义而没有指...

C语言中宏定义之 ## 用于可变参数

GCC 支持复杂的宏,它使用一种不同的语法,使你可以给可变参数一个名字,如同其它参数一样,比如:引用#define debug(format, args...) fprintf(stderr, format, args)这种定义可读性更强,也更容易描述。完整测试代码:引用#include <stdio.h>#define debug(format, args...) fprintf(stderr, format, args)int main(){ char a[20] = "hello world\n"; int i = 10; debug("i = %d, %s", i, a); return 0;}运行输出:引...

c语言中打印浮点数【代码】【图】

c语言中打印浮点数。#include <stdio.h>int main(void) {float f = 100.0;double d = 1.0e2;longdouble ld = 1.0e2;printf("float: %f.\n", f);printf("float: %e.\n", f);printf("float: %E.\n", f);printf("float: %a.\n\n", f);printf("double: %f.\n", d);printf("double: %e.\n", d);printf("double: %E.\n", d);printf("double: %a.\n\n", d);printf("long double: %Lf.\n", ld);printf("long double: %Le.\n", ld);printf("...

c语言中的结构体【代码】【图】

1.结构体是什么在C编程中,结构体是单个名称下的变量(可以是不同类型)的集合。1.1定义结构体struct structureName {dataType member1;dataType member2;... };代码示例:struct Person {char name[50];int citNo;float salary; };1.2创建结构体struct Person {char name[50];int citNo;float salary; };int main() {struct Person person1, person2, p[20];return 0; }也可以这样创建struct Person {char name[50];int citNo;fl...

C语言中的模运算-hdu6124(打表,找规律)【代码】【图】

题目链接:https://vjudge.net/problem/HDU-6124题目描述:题目大意就是给你一个数,判断这个数 % 其它数后共有几种结果。这题对我来说最大的难点是我不太知道每个数 余 其他的数应该得出什么结果,后来参考了别人的博客,才弄清楚了。现在我就举一些例子来说明一下:对于任何数a,a%1=a%a=0;如果a是偶数,a%2=0;如果a是奇数,a%2=1;对于任何比a大的数biga来说,biga%a=a(这点是我开始时不怎么确定的) 通过对几组测试案例的分析...

C语言中关于对目录的操作【代码】

原文地址:C语言中关于对目录的操作 目录的操作不论是在嵌入式产品还是应用软件编程都是必不可少的,不同的开发语言可能略有不同,笔者主要是讨论在Linux平台下对目录的一系列操作: 1、获取当前目录操作: 在系统命令行下我们可以直接输入命令:pwd 来获取当前的工作目录,但是你知道这个命令是怎么执行的吗?它是由系统通过 Shell 程序来解释执行的,在我们自己编写程序的时候怎么能获取当前的工作目录呢?在标准C库中提...

C语言中extern的用法

https://www.cnblogs.com/mch0dm1n/p/5727667.htmlhttps://www.cnblogs.com/codingmengmeng/p/7220119.html0x01  extern用在变量或函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。0x02  extern修饰变量的声明。  举例:若a.c中需引用b.c中的变量int v,可以在a.c中声明extern int v,然后就可以引用变量v;需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到变量v,...

C语言中的union使用方法【图】

union共用声明和共用一变量定义:“联合”是一种特殊的类。也是一种构造类型的数据结构。在一个“联合”内能够定义多种不同的数据类型。 一个被说明为该“联合”类型的变量中,同意装入该“联合”所定义的不论什么一种数据,这些数据共享同一段内存,以达到节省空间的目的(另一个节省空间的类型:位域)。 这是一个很特殊的地方,也是联合的特征。另外,同struct一样,联合默认訪问权限也是公有的,而且,也具有成员函数。 共用体(...

C语言中getch()、getche()和getchar()

本文章为转载文章,文档贡献者wdzhangxiang 个人网址:www.baidu.com/p/wdzhangxiang首先不要忘了,要用getch()必须引入头文件conio.h,以前学C语言的时候,我们总喜欢用在程序的末尾加上它,利用它来实现程序运行完了暂停不退出的效果。如果不加这句话,在TC2.0的环境中我们用Ctrl+F9编译并运行后,程序一运行完了就退回到TC环境中,我们根本来不及看到结果,这时要看结果,我们就要按Alt+F5回到DOS环境中去看结果,这很麻烦。而如...

2_C语言中的数据类型 (三)整数与无符号数【代码】【图】

1.1 sizeof关键字sizeof是c语言关键字,功能是求指定数据类型在内存中的大小,单位:字节sizeof与size_t类型 1.1 int类型1.1.1 int常量,变量int就是32位的一个二进制整数,在内存当中占据4个字节的空间1.1.2 printf输出int值%d,输出一个有符号的10进制整数,%u,代表输出一个无符号的十进制整数1.1.3 printf输出八进制和十六进制%x,代表输出16进制数,%X,用大写字母方式输出16进制数%o...

C语言中的排序算法--冒泡排序,选择排序,希尔排序【代码】

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端维基百科:点击打开链接 [cpp] view plain copy /* 用选择法对10个数进行排序 */ #include<stdio.h> void ma...

浅谈C语言中的联合体【代码】【图】

联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员; 4)其对齐方式要适合其中所有的成员;下面解释这四条描述: 由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联...

C语言中static的使用

在开发过程中。我们常常会须要定义一些static类型的变量或者函数。我们接下来来详细聊一下static;1、修饰变量 当static来修饰一个变量时,就注定了这个变量的可见范围和生命周期; (1)当修饰全局变量时 static int flag1 = 0; int flag2 = 0; 这两个变量存储在全局数据区。flag1仅仅在本文件可见。其它文件里不可见;flag2可在其它文件里通过声明extern int flag2来使用; (...

c语言中递归函数真的好吗?【代码】

递归函数就是直接或者间接的调用自己本身的函数。 接触递归的时候我们经常会看到这个程序 #include<stdio.h> #include<stdlib.h> long factorial(int n) { if (n <= 0) return 1; else return n*factorial(n - 1); } int main() { int n = 5; printf("%ld\n", factorial(n)); system("pause"); return 0; }这就是计算阶乘的一个递归函数!!但是它真的好吗?答案是 no!这个程序的执行效率非常低,因为每次调用函数时的...