C++基础---C语言部分4

一、编译预处理:

1.宏定义:  以  #define 开始,分为带参数和不带参数两种。

  不带参数的宏定义:   #define   PI   3.14

  宏替换只是宏名誉字符串之间的简单替换,不做其他任何数据类型和合法性检查,也不分配内存空间。

  带参数的宏定义:    #define    MUL(x , y)    (x)*(y)

  注意:写带参数宏定义时,宏名与左括号之间不能出现空格,否则空格右边的字符都回作为替代字符串的一部分。

    #define  ADD     (x,y)    x+y    //会认为把ADD宏替换成   (x,y)   x+y

  带参数的宏与函数的区别:

  1. 函数调用在程序运行时处理,在栈中分配内存单元。宏带环则是在编译前进行的,在替换时并不分配内存单元,不进行值传递,没有返回值得概念。
  2. 函数调用时,先计算出实参表达式的值,然后赋值给形参。而宏只是进行简单的替换,不做任何计算。
  3. 函数中的形式参数和实际参数都要有类型,且两者要一致,如果不一致,系统将自动进行类型转换。而宏不存在类型问题。
  4. 宏替换只占用编译时间,因为实在编译前完成的,而函数调用要占用运行时间。

#define   #undef(undef提前终止宏定义的作用域)。

2.文件包含:    #include  <文件名>或  #include "文件名"

3.条件编译:只编译原程序中满足条件的程序段。1.使生成的目标程序短小,减少程序运行时内存。2.方便调试。

  • 根据宏名是否已经定义来确定是否编译某些程序段
  • //暂时跳过去
时间: 2024-10-18 06:22:11

C++基础---C语言部分4的相关文章

[C/C++基础] C语言常用函数sprintf和snprintf的使用方法

Sprintf 函数声明:int sprintf(char *buffer, const char *format [, argument1, argument2, -]) 用途:将一段数据写入以地址buffer开始的字符串缓冲区 所属库文件: <stdio.h> 参数:(1)buffer,将要写入数据的起始地址:(2)format,写入数据的格式:(3)argument:要写的数据,可以是任何格式的. 返回值:实际写入的字符串长度 说明:此函数需要注意缓冲区buffer溢出,要为写入的arg

[C/C++基础] C语言常用函数strlen的使用方法

函数声明:extern unsigned int strlen(char *s); 所属函数库:<string.h> 功能:返回s所指的字符串的长度,其中字符串必须以'\0'结尾 参数:s为字符串的初始地址 使用举例: 代码如下 编译运行结果 说明: 函数strlen比较容易理解,其功能和sizeof很容易混淆.其中sizeof指的是字符串声明后占用的内存长度,它就是一个操作符,不是函数:而strlen则是一个函数,它从第一个字节开始往后数,直到遇见了'\0',则停止. [C/C++基础] C

[C/C++基础] C语言常用函数memset的使用方法

函数声明:void *memset(void *s, int ch, size_t n); 用途:为一段内存的每一个字节都赋予ch所代表的值,该值采用ASCII编码. 所属函数库:<memory.h> 或者 <string.h> 参数:(1)s,开始内存的地址:(2)ch和n,从地址s开始,在之后的n字节长度内,把每一个字节的值都赋值为n. 使用举例: 代码如下 编译运行结果 说明: 该函数最常用的用途就是将一段新分配的内存初始化为0.例如我们代码的第9-10行. 需要注意的是,函

Java基础-lesson2-java语言基础

一.   不同包中的文件调用 说明:创建三个Java文件,PackageDemo.java Dog.java   Cat.java PackageDemo.java  Dog.java 在oreg.westos.java.lesson1包中 Cat.java 在oreg.westos.java.lesson2  包中: 用PackageDemo.java 调用Dog.java   Cat.java 1.  创建文件   package org.westos.java.lesson1;      

Django学习之 - 基础模板语言

模板语言循环 1:如果模板语言遇到列表,直接进行循环取值即可. 2:如果模板语言遇到字典进行循环有以下3种: - for item in dict.keys 只循环获取字典key - for item in dict.value 只循环获取字典value - for k,v in dict.items 循环获取字典的key,value全部.实例url:fordict # 字典for循环的取值方法 1 userlist = { 2 '1': {'name': 'jack', 'age': 36},

python基础python语言特性

Python的语言特性 Python是一门具有强类型(即变量类型是强制要求的).动态性.隐式类型(不需要做变量声明).大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言. 它能做的事情很多: 1)网站后端程序员:使用它单间网站,后台服务比较容易维护.如:Gmail.Youtube.知乎.豆瓣 2)自动化运维:自动化处理大量的运维任务 3)数据分析师:快速开发快速验证,分析数据得到结果 4)游戏开发者:一般是作为游戏脚本内嵌在游戏中 5)自动化测试:编写为简单

C基础--C语言的数组

数组的定义: 一.正确写法: 1.int ages[5]--定义了一个5个长度的int类型的数组 2.int ages[]={1,2,3,4,5};--定义了一个5个长度的int类型的数组,并且初始化数组的值 3.int ages[5]={10};--定义了一个5个长度的int类型的数组,并且给ages[0]=10; 二.错误写法: 1.int a[];    2.int[5] a--C#,java语言中定义数组的方法,一定要与C语言区分开! 2.int a[] = {10,12,13};  a

基础C语言 学习总结&lt;1&gt;

[第一章] // //  main.c //  HelloWorld // //  Created by 姜浩 on 16/3/28. //  Copyright (c) 2016年 jredu. All rights reserved. // // 单行注释 // command+/ 批量注释 /* 多行注释 option+command+?? 可以折叠多行注释 */ #include <stdio.h> /* 1??#include 预处理语句,意思是包含.写在文件的最上面,main方法之

【转】ORACLE SQL基础—DDL语言 礼记八目 2017-12-23 21:26:21

原文地址:https://www.toutiao.com/i6502733303550837261/ SQL语言分为:DDL数据定义语言,DML数据操纵语言,DCL是数据库控制语言,TC事务控制语言 *DDL数据定义语言(Data Definition Language):是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE.ALTER与DROP,RENAME,TRUNCATE几个语法所组成. *DML数据操纵语言(Data Manipulation Language),用户通

麦子学院android开发--Android基础--Java语言基础1

课程介绍 1.Java基础语法 (1)计算机语言和java 简介(2)Jdk安装与环境搭建.编写HelloWorld(3)标识符与关键字(4)Java的数据类型(5)变量和常量(6)运算符与表达式(7)流程控制(条件语句.循环语句.流程控制中的Break和continue)(8)数组(9)枚举 2.Java进阶 封装.继承与多态 (1)封装: 1)从抽象到类2)构造方法与对象的创建3)参数传值4)实例成员和类成员5)方法重载6)this关键字7)包8)import语句9)访问权限 (2)继承: