`

C/C++ 回顾总结之三

阅读更多

宏定义

指出#defineconst的区别(#define预处理,不作类型检查)

写出max, add, multi的宏定义(有可能会出现一些问题),尤其需要注意定义的副作用。

static关键字

C文字中定义一个变量时,指明该变量只能在当前模块(.c.cpp)文件中使用;

在一个函数中定义一个static变量时,仅在函数第一次被访问时初始化该变量;

在类中声明一个static变量或是方法时,意义与Java中相同。

 

1.         函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;

2.         在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

3.         在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;

4.         在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

5.         在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

指针的加减法

指针加1的意义是该指针指向的内存地址加上一个该指针指向的类型的大小。如int型的指针加1实际上是内存地址向后偏移4字节。当指向同一块内存空间的两个不同类型的指针做加1操作后,其有可能指向不同的地址空间。

多维数组

Int a[20][10]的含义等同于:

Typedef int b[10];

B a[20]

 

比较下面两个数组在内存中的大小

char *name[] = {“zhang”, “wang”, “li”, “zhao”};

char aname[][15] = {};

函数指针

int (*func_p)(int);声明了一个指向函数的指针,这个函数的参数类型是int,返回值类型也是int

结构体的递归声明

struct AStruct

{

         struct AStruct b;

}

这种声明方式是错误的,因为编译器无法确定该结构体的大小。

 

但是可以使用

struct AStruct

{

         struct AStruct *b;

}

的方式声明。因为指针的大小是可以确定的。

分享到:
评论

相关推荐

    高质量C/C++编程指南

    ### 高质量C/C++编程指南知识点概览 #### 一、引言 《高质量C/C++编程指南》是一份由林锐博士编写的详细指南,旨在帮助软件开发者提高其编程技能并提升软件质量。该指南最初起草于2001年,并在同年7月正式发布,...

    高效C/C++编程

    ### 高效C/C++编程知识点详述 #### 前言:软件质量的重要性 - **背景介绍**:本文档由林锐博士撰写,旨在强调软件质量的重要性,并为C/C++程序员提供一套实用的编程规范。 - **目标读者**:面向所有C/C++程序员,...

    2020最新_C++全套视频教程(首发)源码+笔记+课件

    学习笔记通常包含了对每个章节重要知识点的精辟总结,帮助学习者在回顾时能够迅速定位和理解重点。而学习大纲则提供了每个学习阶段所需掌握知识的框架,保证学习者能够按部就班地系统性学习,不遗漏任何一个重要的...

    c/c++资源

    标题 "C/C++资源" 暗示了这个压缩包包含与C和C++编程语言相关的学习材料。从描述中的“博文链接”可以推测,这可能是一个博主分享的学习资料,特别是关于C语言基础的深入理解。标签“源码”可能指的是包含的代码示例...

    彻彻底底搞定C/C++指针

    ### 彻彻底底搞定C/C++指针 #### 前言 姚云飞先生的著作《彻底搞定C指针》是一本极具价值的参考书籍,尤其针对那些在C/C++编程过程中对指针概念感到困惑的学习者。本书旨在帮助读者全面掌握C/C++中的指针操作,并...

    高质量C/C++编程

    ### 高质量C/C++编程知识点详述 #### 一、引言 - **文档目的**:《高质量C++/C编程指南》旨在为C/C++程序员提供一套规范化的编程指导,帮助他们编写出高质量、可维护性强的代码。 - **适用对象**:主要面向有一定C/...

    Memory Management Algorithms and Implementation in C/ C++

    ### 内存管理算法及其在C/C++中的实现 #### 一、引言与背景 《内存管理:算法与C/C++实现》是一本由Bill Blunden编写的深入探讨计算机内存管理系统的书籍。本书不仅提供了关于内存管理机制的理论知识,还通过大量...

    林锐,高质量C /C++编程手册

    ### 林锐,《高质量C/C++编程手册》关键知识点概览 #### 1. 文件结构与版本控制 - **文件标识**:明确指出文档的版本为1.0,由林锐博士编写,已完成并正式发布于2001年7月24日。 - **版本历史**:详细记录了文档从...

    C/C++编程指南

    ### C/C++编程指南知识点概览 #### 一、文档结构 - **版权与版本声明**:明确了文档的版权信息及版本控制策略。 - **头文件结构**:讲解了头文件的标准格式,包括宏定义、预处理器指令等,确保代码的一致性和可维护...

    Turbo C_C++ V3.rar

    Turbo C/C++ V3是一款经典的C和C++编程环境,由Borland公司开发,深受程序员...虽然现在有更多现代的IDE和编译器,但Turbo C/C++ V3仍然是一个值得回顾和学习的历史性软件,对于理解早期C/C++编程有着不可替代的价值。

    c++学习的50条黄金定律

    - **解析**:虽然C++和C语言有很多相似之处,但它们也有各自的特点。同时学习两者有助于更好地理解它们之间的联系和区别。 #### 40. 学习目的明确 - **解析**:学习C++的最终目的是为了应用到实际工作中。因此,在...

    dsouza-IROS2001.rar_C/C++_

    C++提供面向对象编程特性,而C语言则以其高效和低级特性著称,两者常用于编写机器人控制系统的基础软件层。在人形机器人逆向动力学的实现中,C/C++可能被用来编写底层的算法,这些算法能快速计算出关节的力矩和速度...

    samplingTheorem.zip_DSP编程_C/C++_

    《采样定理在数字信号处理中的应用及C/C++编程实践》 采样定理是数字信号处理领域的基石,它揭示了连续时间信号转换为离散时间信号的关键原理。这个理论对于理解和实现数字信号处理器(DSP)系统至关重要,尤其在...

    总结C/C++面试中可能会碰到的字符串指针题

    首先,让我们回顾一下字符串在C/C++中的基本概念。在C/C++中,字符串是由字符组成的序列,以空字符`\0`作为终止标志。这意味着,当你创建一个长度为N的字符数组来存储字符串时,实际能够容纳的最多是N-1个可见字符,...

    JNI中C和Java参数传递详细例子

    在JNI中,如果要在C/C++和Java之间传递结构体,就需要定义相应的Java类来匹配C/C++中的结构体,并且实现必要的JNI方法来进行转换。 #### 四、实例分析 假设有一个表示硬盘信息的结构体`DiskInfo`: ```c struct ...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    Java programming with JNI.pdf

    #### 三、从C/C++程序中调用Java代码 **概念介绍**: - **环境初始化**:了解如何初始化JNI环境,以便从C/C++代码中访问Java对象和方法。 - **调用Java方法**:学习如何通过JNI环境调用Java类的方法,包括实例方法...

Global site tag (gtag.js) - Google Analytics