C++高级编程1 C++速成

1.常用的预处理指令

#include [file]

#define key value 这个是在C中经常使用的,定义常量数值,用于字符串替换的工作。

#ifndef key #ifdef key

#define key

#endif

#pragma once 会因为编译器而有所不同,如果编译器支持的话可以用于代替上面的指令,在预处理阶段会提示警告。

#ifndef KEY

#define KEY

//code

#endif

可以使用#pragma once 代替。

2.C++运行程序传递的参数

int main(int argc,char ** argv):

其中argv表示的是这些参数,第一个参数都是程序的名字。

3.变量初始化

C++中如果使用了未初始化的变量,在程序编译期间会报错,但是我们可以通过指针输出指针指向的内存区域的对象数据,但是该数据是乱起八糟。

对于利用char 指针指向字符串,删除的时候需要使用 delete [] p,但是问题是必须char指向的是在堆中的内存空间,而不可以是字符串常量。

char *pChar = new  char[100];

pChar[0] = 'a';

pChar[1] ='b';

pChar[2] = '\0';

cout << pChar << endl;

delete []pChar;

这个样子是可以的,但是如果char *p = "yangteng";但是不可以delete掉,因为这样的话,指针指向的是在常量区的数据.不可以删除.但是在此语句之前需要删除delete []p;

4.枚举类型

enum Type{

yang,teng=10,fei

};

cout <<"enum yang:"<< yang << endl;

cout <<"enum teng:" << teng << endl;

cout << "enum fei:" << Type::fei << endl;

5.C++11规范中新增加的循环:

int arr[] = {1,2,3,4,5,6};

for(auto i : arr){ // for(auto & i : arr)

i  = i*2;

cout << i << " " ;

}

cout << endl;

for(auto i : arr){

cout << i<<" " ;

}

cout << endl;

6数组的初始化

int arr [10]={10};//只有第一个元素是10,其他的都初始化为0

for (int i =0; i<sizeof(arr)/sizeof(int) ; i++){

cout << arr[i] << " " ;

}

cout << endl;

在C++11 中引入了array (#include <array>)初始化为 0,但是大小在编译期间就已经决定了,不可以字运行的时候改变,运行时数组不会变大或者是变小。

array<int,4> arr = {9,7};

for(auto i : arr){

cout << i << " ";

}

7.堆栈的知识

堆栈和栈是在编译期间决定了内存的大小,因此在编程中是不可以声明大小可以变化的数组,必须是确定的值。

const int size = 100;

int arrays[size] ;

这样是对的,但是如果将const删除掉,就会出现编译不通过的错误提示。

8.字符串的形式

C风格的字符串:

char  arrayString[10] = “yang”;最后面需要考虑\0字符。

char* p = “yang;

c++中使用的是string

9.const用法

定义常量 const float PI = 3.1415926;

const保护参数, void fun(const int a); 放置在程序中修改参数变量的值。

修饰方法,放在最后面,在成员函数中,如果不修改成员变量的话,就最好使用const修饰成员函数,然后在程序函数中如果不小心修改了成员变量,就会编译报错。

C++高级编程1 C++速成的更多相关文章

  1. 读《C#高级编程》第1章问题

    读<C#高级编程>第1章 .Net机构体系笔记 网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但是做事情很能坚持. 本章主要是了解.Net的结构,都是一些概念,并没 ...

  2. MVC高级编程+C#高级编程

    本人今年的目标是学习MVC高级编程和C#高级编程,把自己的基础打的扎实,本文中值是一个开到,定期会在上面记录学习的技术点和心得就,加油吧!!!!!

  3. 《C#高级编程》读书笔记

    <C#高级编程>读书笔记 C#类型的取值范围 名称 CTS类型 说明 范围 sbyte System.SByte 8位有符号的整数 -128~127(−27−27~27−127−1) sh ...

  4. jquery插件开发继承了jQuery高级编程思路

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  5. jQuery高级编程

    jquery高级编程1.jquery入门2.Javascript基础3.jQuery核心技术 3.1 jQuery脚本的结构 3.2 非侵扰事JavaScript 3.3 jQuery框架的结构 3. ...

  6. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  7. multiple definition of `err_sys' 《UNIX环境高级编程》

    本文地址:http://www.cnblogs.com/yhLinux/p/4079930.html 问题描述: [点击此处直接看解决方案] 在练习<UNIX环境高级编程>APUE程序清单 ...

  8. Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程

    Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程 教程简介: 本教程共71节,主要介绍了shell的相关知识教程,如shell编程需要的基础知识储备.shell脚本概念介 ...

  9. unix环境高级编程基础知识之第二篇(3)

    看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...

随机推荐

  1. RBAC权限模型——项目实战

    RBAC权限模型——项目实战

  2. CSS清除浮动大全的8种方法

    清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的 ...

  3. 20145313张雪纯 《Java程序设计》8周学习总结

    20145313张雪纯 <Java程序设计>8周学习总结 教材学习内容总结 java.util.logging包的优点在于提供了日志功能相关类与接口,不必额外配置日志组件就可以在标准jav ...

  4. linux 第三周

    linux内核目录结构 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一 ...

  5. 在eclipse搭建python开发环境

    在一次看别人帖子的时候发现,别人是用eclipse来写python代码的,所以好奇也想尝试一番,之前一直在用Pycharm,这个也确实是最好的开发python的IDE了,但是有时候也会有卡顿的情况,主 ...

  6. 高手用的SourceInsight配置文件——仿Sublime风格【转】

    本文转载自:https://blog.csdn.net/weixin_38233274/article/details/80209100 配置文件下载地址:https://download.csdn. ...

  7. validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

    项目环境 Maven.Tomcat7.0.27.jdk1.8.0_111 报这个错误的原因是项目中依赖 javax.servlet-api 包和Tomcat本身的包冲突了,Tomcat本身也有这个包 ...

  8. Spring Boot 上传图片文件

    步骤一:基于前面springboot入门小demo 基于的springboot入门小demo,已包含了前面文章的知识点(比如:热部署.全局异常处理器). 步骤二:创建uploadPage.jsp上传页 ...

  9. Spring Boot CRUD+分页(基于Mybatis注解方式)

    步骤一:关于Mybatis Mybatis 是用来进行数据库操作的框架.其中分页使用Mybatis中的PageHelper插件. Mybatis与hibernate对比: 1.hibernate是一个 ...

  10. 同时打印多个worksheets

    https://support.office.com/en-us/article/print-a-sheet-or-workbook-0f104967-ebce-406f-9c37-d3ab0dc02 ...