IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++内存模型和名称空间学习摘要 -> 正文阅读

[C++知识库]C++内存模型和名称空间学习摘要

C++内存模型和名称空间

参考书籍:C++ Primer Plus

现在是学java的,c++只用过c部分和stl写算法,不过学校面向对象设计要用C++,看书时发现C++中的static和java中含义相差很多,做一下学习记录。

单独编译

头文件

用于包含结构声明和使用这些结构的函数原型。头文件中常包含的内容:

  1. 函数原型。
  2. #defineconst声明的常量
  3. 结构声明,类声明。
  4. 模板声明
  5. 内联函数

示例

头文件

//my_head.h

#ifndef MY_HEAD_
#define MY_HEAD_

#include<iostream>
#include<string>
struct Person
{
    std::string sex;
    int age;
};

void PersonToString (Person person);

#endif

/*
关于#ifndef MY_HEAD_
	#define MY_HEAD_
	#endif
	用于避免重复包含头文件,编译器首次遇到该文件没有定义MY_HEAD_,进行编译,再次遇到MY_HEAD_已定义,则会跳到#endif之后。
*/

测试文件

test1.cc

#include "my_head.h"
#include<iostream>

void PersonToString (Person person) {
    std::cout<<person.age<<" "<<person.sex<<'\n';
}

test2.cc

#include "my_head.h"

int main() {

    Person person;
    std::cin>>person.age>>person.sex;
    PersonToString(person);
}

编译运行

g++ ./test1.cc ./test2.cc -o test
./test

存储持续性,作用域,链接性

持续存储性

C++中一般使用4种不同的方案存储数据,这些方案的区别在于数据保留在内存中的时间。

1.自动存储持续性

? 在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。它们在程序开始执行其所属的函数或者代码块时被创建,在执行完函数或代码块时,它们使用的内存被释放。

C++中有两种存储持续性为自动的变量:自动变量、寄存器变量(不常用)。

2.静态存储持续性变量

? 在函数定义外的变量和使用关键字static定义的变量。它们在程序整个运行过程中都存在。C++中有3中存储持续性为静态的变量。静态无链接性、静态内部链接性、静态外部链接性。

3.动态存储持续性

? 用new运算符分配的内存将一直存在,直到使用delete运算符将其释放或者程序结束为止。这种内存的存储持续性为动态,有时候被称为自由存储或者堆。

4.线程存储持续性(C++11)

使用thread_local声明的变量生命周期和所属线程一致。

作用域

全局在整个文件有效,局部在代码块内有效等。

链接性

内部链接性:只能在同一文件内使用

外部链接性:可以在不同文件中使用

存储描述持续性作用域链接性如何声明
自动自动代码块在代码块中
静态,无链接性静态代码块在代码块中,使用关键字satic
静态,外部链接性静态文件外部不在任何函数内
静态,内部链接性静态文件内部不在任何函数内,使用关键字static

杂记

关于extern与头文件

https://www.runoob.com/w3cnote/extern-head-h-different.html

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:09:57  更:2021-09-02 11:12:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:43:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码