`

C语言基础八

    博客分类:
  • c
阅读更多
#define是一条预处理指令,可以用来编写宏定义语句。
宏定义语句可以用来给数字起名字。
可以在编译时使用-D选项给一个名字指定对应的数字,例如
gcc -DSIZE=6 02circle.
宏是可以带参数的,宏的参数通常表示一个名称
宏的参数直接参与计算,函数的参数要先制作出一个替身然后才参与计算。

在编写带参数的宏时要在每个参数外边加一对小括号强制参数首先计算

不要把自增,自减的计算结果作为宏的参数使用

宏里可以使用运算符#把一个参数转换成字符串字面值
宏里也可以使用运算符##把一个参数所代表的标识符和其他内容合并形成一个新标识符

条件编译指根据某个条件从多个语句组中选择一组来编译。
#ifdef 宏名称
    语句块1    
#else
	 语句块2
#endif
如果前面定义过对应的宏则编译语句块1,否则编译语句块2
预处理指令#ifndef也可以实现条件编译的效果
条件编译还可以从多组语句中进行选择,方法如下
#if   逻辑表达式1
    语句块1
#elif  逻辑表达式2
	 语句块2
#else
	 语句块3
#endif
其中#elif可以出现多次

C语言中不同的函数可以放置在不同的文件中。
所有函数的声明应该统一放置在头文件中。
如果一个源文件与某个头文件中的任意函数有关,这个源文件应该使用预处理指令#include把这个头文件包含进来。
多文件程序编译时应该在命令中包含所有源文件的名称,例如
gcc 1.c 2.c ...

还可以使用gcc对每个源文件进行单独编译,命令如下
gcc -c 1.c
命令结束会得到以.o作为扩展名的目标文件
可以使用gcc把多个目标文件合并成一个可执行文件,命令如下
gcc 1.o 2.o

编写头文件时要使用条件编译语句对内容进行控制,这样可以避免被多次编译。

/*
	主函数参数练习
*/
#include <stdio.h>
int main(int argc, char *argv[]) {
    int loop = 0;
	 /*for (loop = 0; loop <= (argc - 1); loop++) {
        printf("%s\n", argv[loop]);
	 }*/
	 for (loop = 1; loop <= (argc - 1); loop++) {
        printf("%s ", argv[loop]);
	 }
	 printf("\n");
    return 0;
}

/*
	预处理指令练习
*/
#include <stdio.h>
#define   PI             3.14f
#define   CIRCLE(r1)         2 * PI * r1
#define   AREA(r1)           PI * r1 * r1
#define   PRINT(arr, num)    printf("%d ", arr[num])
#define   INC(v)             v++
#define   SIZE               5
void inc(int value) {
    value++;
}
int main() {
    int values[SIZE], loop = 0;
    float r = 0.0f;
    printf("请输入一个半径:");
	 scanf("%f", &r);
	 printf("圆的周长是%g\n", CIRCLE(r));
	 printf("圆的面积是%g\n", AREA(r));
	 for (loop = 0; loop <= (SIZE - 1); loop++) {
        PRINT(values, loop);
	 }
	 printf("\n");
	 printf("loop是%d\n", loop);
	 INC(loop);
	 printf("loop是%d\n", loop);
	 inc(loop);
	 printf("loop是%d\n", loop);
    return 0;
}


/*
	宏练习
*/
#include <stdio.h>
#define SECPH         (60 * 60)
#define NEG(x)        0 - (x)
int main() {
    printf("NEG(6)是%d\n", NEG(6));
	 printf("NEG(3 + 4)是%d\n", NEG(3 + 4));
	 printf("小时数是%d\n", 7200 / SECPH);
    return 0;
}



/*
	宏练习
*/
#include <stdio.h>
#define MAX(x,y)      x > y ? x : y
#define CH(c)         c >= 'a' && c <= 'z' ? c- 'a' + 'A' : c - 'A' + 'a'
int main() {
    printf("MAX(3,7)是%d\n", MAX(3, 7));
	 printf("MAX(7,3)是%d\n", MAX(7, 3));
	 printf("CH('t')是%c\n", CH('t'));
	 printf("CH('Y')是%c\n", CH('Y'));
    return 0;
}


/*
	宏运算符练习
*/
#include <stdio.h>
#define STR(n)         #n
#define VAR(n)         v_##n
#define GLOBAL(n)      g_##n
int GLOBAL(value);
int main() {
    int VAR(value) = 3;
    printf("%s\n", STR(3 + 4));
	 printf("%s\n", STR(sizeof(int)));
	 printf("GLOBAL(value)是%d\n", GLOBAL(value));
    return 0;
}

/*
	预定义宏练习
*/
#include <stdio.h>
int main() {
    printf("当前行号是%d\n", __LINE__);
	 printf("文件名称是%s\n", __FILE__);
	 printf("日期是%s\n", __DATE__);
	 printf("时间是%s\n", __TIME__);
	 printf("%sC语言标准\n", __STDC__ ? "符合" : "不符合");
    return 0;
}


/*
	条件编译练习
*/
#include <stdio.h>
//#define ONE
int main() {
#ifndef ONE
    printf("1\n");
	 printf("3\n");
#else
	 printf("2\n");
	 printf("4\n");
#endif
    return 0;
}


/*
	条件编译练习
*/
#include <stdio.h>
int main() {
    int order = 0;
	 printf("请点菜:");
	 scanf("%d", &order);
#ifdef  ZHAOBENSHAN
	 if (1 == order) {
        printf("这个菜没有\n");
	 }
	 else {
        printf("这个真没有\n");
	 }
#else
    if (1 == order) {
        printf("这个菜有\n");
	 }
	 else {
        printf("这个菜没有\n");
	 }
#endif
    return 0;
}

/*
	条件编译练习
*/
#include <stdio.h>
int main() {
#if  defined(ONE)
    printf("1\n");
#elif  defined(TWO)
	 printf("2\n");
#else
	 printf("3\n");
#endif
    return 0;
}


/*
	条件编译练习
*/
#include <stdio.h>
int main() {
#if    defined(GONGCHANG)
    printf("80%%\n");
#elif  !defined(JINGPING)
	 printf("100%%\n");
#else
	 printf("120%%\n");
#endif
    return 0;
}

12add1.c
#include "12add.h"
int add(int x, int y) {
    return x + y;
}



/*
	多文件编程练习
*/
#include <stdio.h>
#include "12add.h"
int main() {
    printf("add(2, 3)是%d\n", add(2, 3));
    return 0;
}



#ifndef __12ADD_H__
#define __12ADD_H__
int add(int, int);
#endif  //__12ADD_H__



分享到:
评论

相关推荐

    C语言基础教程(全)

    本教程“C语言基础教程(全)”旨在为初学者提供全面且深入的C语言学习指导。 教程内容可能包括以下几个方面: 1. **C语言概述**:介绍C语言的历史、特点和应用领域,让学习者对C语言有一个初步的认识。 2. **基本...

    C语言基础教程 吕凤翥

    《C语言基础教程》是吕凤翥先生撰写的一本经典C语言教材,尤其适合初学者入门。这本书以其清晰的语言和实例解析,深受广大编程爱好者的喜爱。在学习C语言的过程中,掌握其基础知识至关重要,因为C语言是许多现代编程...

    C语言基础课件 ppt

    《C语言基础课件》是针对初学者及计算机考级者设计的一套全面而详细的教程,旨在帮助读者从零开始掌握C语言的基础知识。这套课件由清华大学出版社出版,其内容涵盖C语言的核心概念和常见编程技巧。通过PPT的形式,...

    C语言基础学习包

    【标题】"C语言基础学习包"所涵盖的知识点主要围绕C语言的基础概念、语法结构、数据类型、控制结构、函数、数组、指针等方面展开。C语言是一种强大的、低级的编程语言,广泛用于系统编程、嵌入式开发、软件工程等多...

    c语言基础教材 零基础学习c语言

    "C语言基础教材"是一份专为初学者设计的学习资源,旨在帮助零基础的学习者逐步掌握C语言的核心概念和技术。 这份教材以HTML格式提供,方便在网页浏览器中阅读和学习,同时也便于检索和打印。HTML文档通常包含丰富的...

    C语言基础教程---电子教案

    C语言基础教程是一门针对初学者的编程课程,旨在教授如何使用C语言进行程序设计。C语言是一种广泛应用的计算机编程语言,因其高效、灵活和强大的功能而被广泛应用于系统编程、软件开发、嵌入式系统等多个领域。本...

    C语言基础.ppt

    **C语言基础** C语言是一种强大的、通用的编程语言,起源于1972年,由丹尼斯·里奇在贝尔实验室开发。它是许多现代编程语言的基石,因其高效、灵活和可移植性而广受程序员喜爱。"C语言基础.ppt"这份教程将引导初学...

    C语言基础练习面试题

    本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...

    C语言基础 C语言基础 C语言基础 C语言基础.zip

    8. **指针**:C语言的指针是其强大之处,它允许我们直接操作内存。指针变量存储了其他变量的地址,通过指针可以实现动态内存分配、数据结构(如链表、树)的构建以及高效算法的实现。 9. **预处理器**:预处理器...

    c语言基础练习题及答案

    根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...

    C语言课件(C语言基础)

    8. **结构体和共用体**:第11章介绍了结构体和共用体,它们允许将多个不同类型的数据组织在一起,是创建复杂数据结构的基础。 9. **位运算**:第12章讲述了位运算符,如按位与、按位或、按位异或和位移,这些在底层...

    超实用的C语言基础知识总结

    "C语言基础知识总结" 本资源摘要信息将对C语言的基础知识进行总结,涵盖了计算机基础知识、C语言基础知识、标识符、整数与实数、算术表达式、赋值表达式、复合赋值表达式、自加表达式、逗号表达式、强制类型转换、...

    C语言基础程序代码合集

    本资源“C语言基础程序代码合集”旨在为初学者提供一系列基础的C语言程序示例,帮助他们理解和掌握C语言的核心概念。 在C语言中,基础知识点主要包括以下几个方面: 1. **基本数据类型**:C语言有几种基本的数据...

    C语言基础知识PPT文件

    这个“C语言基础知识PPT文件”显然是一份面向初学者的学习资料,旨在帮助用户掌握C语言的基本概念和语法。 首先,C语言的基础部分通常包括以下几个方面: 1. **数据类型**:C语言提供了多种基本数据类型,如整型...

    c语言基础知识总结.pdf

    C语言基础知识总结 C语言基础知识总结是计算机编程语言的基础知识,本文总结了C语言的基础知识点,涵盖程序结构、数据类型、运算符、控制结构、函数、数组、指针等领域。 一、程序结构 * 程序结构有三种:顺序...

    C语言基础知识大全

    《C语言基础知识大全》这份文档深入浅出地介绍了C语言的核心概念与编程技巧,是学习C语言不可或缺的宝典。以下是从标题、描述、标签以及部分内容中提炼的关键知识点,旨在帮助初学者快速掌握C语言的基本原理与应用。...

    C语言基础 C语言基础 .zip

    学习C语言基础,不仅能够理解程序的基本结构和逻辑,还能为深入学习操作系统、编译原理等高级主题打下坚实基础。通过不断的实践和项目经验积累,你可以掌握C语言的精髓,成为一名出色的程序员。

    C语言基础学习(PPt格式)

    本资源集合为"C语言基础学习",包含PPT格式的学习资料,适合C语言初学者,也可作为教师的教学辅助材料。 在C语言基础学习中,主要涵盖以下几个关键知识点: 1. **基本数据类型**:C语言提供了多种基本数据类型,...

Global site tag (gtag.js) - Google Analytics