起步

Hello world!

 #include <iostream>

 int main()
{
std::cout<<"Hello, world!";
return ;
}

基本输入和输出对象

cin        标准输入

cout      标准输出

cerr       标准错误

clog       标准日志

注释

//单行注释

/*

   多行注释(不能嵌套)         

*/

内置基本类型

bool 布尔类型
short 短整型
int 整型
long 长整型
long long 长整型
float 单精度浮点数
double 双精度浮点数
long double 扩展精度浮点数
char 字符
wchar_t 宽字符
char16_t Unicode字符
char32_t Unicode字符

整形:包括整形,布尔类型,字符类型

浮点数:浮点类型

整形分为 带符号signed 和 无符号 unsigned

带符号:表示正数,0,负数

无符号:表示0和正数(也就是没有负号)

字面值常量

      //十进制
//八进制
0xc //十六进制
/*
十进制数照常写
八进制数以0开头
十六进制数以0x或0X开头
*/ //浮点型 //小数
3.141592654 //科学计数法
3.1415E0 //字符和字符串字面值 //字符
'a' //字符串
"Hello world!"

转义序列

换行符          \n

横向制表符     \t

纵向制表符     \v

反斜线           \\

回车符           \r

退格符           \b

问号              \?

进纸符           \f

响铃符           \a

双引号            \"

单引号            \'

字面值类型指示

前缀 含义 类型
u Unicode16字符 char16_t
U Unicode32字符 char32_t
L 宽字符 wchar_t
u8 UTF-8 char

布尔类型字面值   true      false

变量:命名的,可以改变其值的(可读,可修改),可供程序操作的储存空间。

变量定义基本形式:

类型说明符 变量名;

例子:int i;

初始化

int i;           //定义(没有初始化)
int a = ; //定义并初始化 a = ; //赋值 //列表初始化
int s = {};
int s{};
int s();

声明:声明定义存在

定义:声明并创建对象实体

extern int i;   //声明而不是定义
int j; //声明并定义 extern double pi = 3.1415;
//定义。初始化抵消extern作用 //变量只能定义一次,可以被多次声明

标识符

由字母,数字,下划线组成,必须以字母或下划线开头。不限制长度,对大小写敏感

作用域

变量的有效使用区域,开始于声明语句,结束于声明所在的作用域末端,大多数以大括号分隔。

全局作用域:所有作用域的根,任意大括号定义的作用域之外,通常为整个文件。

块作用域:语句块形成的作用域

外层作用域隐藏内层作用域的名字

允许内层作用域重新定义外层作用域已有的名字

复合类型

定义方式:

基本数据类型 声明符列表

例如:

int *p1, *p2;

int属于基本数据类型      *p1  *p2属于声明符    , 属于分隔符       其中  * 是指针符号,属于复合类型说明符       p1   p2属于标识符        ;为语句结束标志

引用(左值引用)

形式:   基本数据类型 &标识符;

&为引用的复合类型说明符

例如:int &r1 = i1, &r2 = i2;

引用只是别名,不创建实体,引用必须初始化,用非引用变量初始化。

指针

指针指向一个对象,两者基本数据类型必须相同。指针是实体,可以不初始化,会有一个不确定的值。

形式:基本数据类型 *标识符;

*为指针的复合类型说明符

例如:int *p1, *p2;

获取对象地址,即给指针赋值或使指针指向对象

使用取地址符& 形式: &变量名(这里的取地址符与引用的复合类型说明符符号相同,但是代表不同的意思。在声明语句内表示引用,在赋值语句内表示取地址符)

例如: int *pi = &ival;

基本数据类型应该对应

指针值:

1.指向一个对象

2.指向相邻对象所占空间的下一个位置

3.空指针,没有指向任何对象

4.无效指针,上述情况之外,指向无效地址,也叫垂悬指针或野指针。

访问指针所指的对象

使用解引用符* (多个意思么,不解释了)

int *pi = &ival;

cout << *pi;

int i;

i = *pi;

空指针

//空指针的多种创建方式
//可以初始化为空指针
//也可以赋值变为空指针 //使用空指针字面值
int *p1 = nullptr; //使用字面值常量0(为0的变量不可以)
int *p2 = ; //使用宏NULL
int *p3 = NULL;
//不过NULL就是0
#define NULL 0

void* 指针,存放任意地址,无视基本数据类型

指向指针的指针

指针的级数由*的个数决定。

一级指针(最低级的指针*)指向非指针对象。大于一级的指针指向相邻的下一级指针。如***指向**,**指向*,*指向非指针对象。

//对象
int ival = ; //一级指针
int *pi = &ival; //二级指针
int **ppi = &pi; //三级指针
int ***pppi = &ppi;

多级指针需要解引用多次。

int use = ;

use = ***pppi;
use = **ppi;
use = *pi;

常量

const限定符

可以初始化和读取,不可以赋值。

加在声明符之前。

const int ci = 0;

仅在文件内有效。

C++ 语法--变量和常量的更多相关文章

  1. Arduino语法-变量和常量

    变量的声明: int led=11 一般变量的声明方法为类型名+变量名+变量初始化值.变量名的写法约定为首字母小写 变量的作用范围又称为作用域,变量的作用范围与该变量在哪儿声明有关,大致分为如下两种: ...

  2. Swift基础1.1——基本的语法—变量和常量

    前些日子.第一届Swift开发人员大会开了之后.身边非常多搞OC的朋友就按捺不住了. 都认为是时候学一下Swift了,毕竟Swift已是趋势. 也是应他们再三要求,让我整理一下Swift的学习心得.今 ...

  3. C# 一、语法结构、注释、命名空间、Main入口点、变量与常量、运算符、流程控制(循环)

    一.代码结构 1)一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(St ...

  4. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  5. 01.JS语法规范、变量与常量

    前言:    学习一门编程语言的基本步骤   (01)了解背景知识  (02)搭建开发环境  (03)语法规范  (04)常量和变量 2.JS的开发环境 (1)浏览器自带的JS解释器(js引擎) (2 ...

  6. 020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结

    020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结 本文知识点:变量与常量 知识总结 Java中的标识符 Java中的关键字 目前常 ...

  7. 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例

    019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...

  8. 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念

    018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...

  9. 017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例

    017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例 本文知识点:变量 相同类型的变量可以一次同时定义多个 例:可以一行代码同时定义2个变量x ...

随机推荐

  1. translate.py

    #!/usr/bin/python # -*- coding: UTF-8 -*- import xlrd import xlwt from xlutils.copy import copy impo ...

  2. WM_COMMAND消息

    原文地址:https://blog.csdn.net/whm243149796/article/details/78966065 当用户点击菜单.按钮.下拉列表框等控件时候,会触发WM_COMMAND ...

  3. 持续集成①安装部署jenkins从git获取代码

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

  4. MVC异步方法

    在mvc的开发过程中,有时候我们会需要在action中调用异步方法,这个时候会需要做一些特殊处理.我们会使用到await和async.对应的controller也应该是async的. 在MVC4中直接 ...

  5. 【原创】Linux基础之windows linux双系统

    1 下载iso opensuse 下载: http://download.opensuse.org/distribution/openSUSE-stable/iso/openSUSE-Leap-15. ...

  6. grep匹配某个次出现的次数

    cat file | grep  -c 'xxx'  统计xxx在file中出现的行数 cat file | grep  -o 'xxx'  统计xxx在file中出现的次数

  7. python之vscode配置开发调试环境

    在vscode中下载python插件,下载量最多的就是 打开launch.json,把以下代码粘贴进去即可 { // 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述. ...

  8. kafka架构浅显理解

    Kafka的概念: 1. AMQP协议 Advanced Message Queuing Protocol (高级消息队列协议) The Advanced Message Queuing Protoc ...

  9. SpringBoot多环境区分

    1.修改application.yml配置文件 spring: profiles: active: cppdy datasource: driver-class-name: com.mysql.jdb ...

  10. 论文阅读:Review of Visual Saliency Detection with Comprehensive Information

    这篇文章目前发表在arxiv,日期:20180309. 这是一篇针对多种综合性信息的视觉显著性检测的综述文章. 注:有些名词直接贴原文,是因为不翻译更容易理解.也不会逐字逐句都翻译,重要的肯定不会错过 ...