c++基础

1.变量需要初始化

2.常量:定义不可 修改的数据

(1)宏常量:放于文件上方,如:

#define day  7 

(2)const修饰变量,如:

const int day=7

3.标识符规则:除了关键字以外,区分大小写,需以字母、数字、下划线组成且字母或者下划线必须为为第一个字符

4.数据类型:

(1)整型:

short(短整型)2字节       (-2^15 ~ 2^15-1)
int(整型)4字节(-2^31 ~ 2^31-1)
long(长整型)Windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2^31-1)
long long(长长整形)8字节(-2^63 ~ 2^63-1)

(2)浮点型:

float4字节 7位有效数字
double 8字节15-16位有效数字

(3)字符型:

字符型变量只占一个字节,并且是以字符对应的ASCII码储存;

A的ASCII值为65,a的ASCII值为97。如:

char a ="A";

(4)字符串:

(a)char 变量名 = " 字符串值"; 如:

char ch[ ] = "hello world!"

(b)string 变量名 = " 字符串值";用此方法需要包含<string>头文件 如:

string str = "hello world";

(5)布尔类型:

代表真和假的值:true(1)和false(0),且只占一个字节

(6)转义字符:

转义字符含义ASCII码值(十进制)
\a警报007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符""092
'代表一个单引号(撇号)字符039
"代表一个双引号字符034
\?代表一个问号063
\0数字0000
\ddd8进制转义字符,d范围0~73位8进制
\xhh16进制转义字符,h范围0~9,a~f,A~F3位16进制

5.sizeof():可以统计数据类型所占内存大小

6.数据输入:cin>> 变量;

7.数据输出:cout<<变量;

8.算数运算符:

运算符术语示例结果
+正号+33
-负号-3-3
+10 + 515
-10 - 55
*10 * 550
/10 / 52
%取模(取余)10 % 31
++前置递增a=2; b=++a;a=3; b=3;
++后置递增a=2; b=a++;a=3; b=2;
--前置递减a=2; b=--a;a=1; b=1;
--后置递减a=2; b=a--;a=1; b=2;

总结:在除法运算中,除数不能为0;只有整型变量可以进行取模运算;前置递增先对变量进行++,再计算表达式,后置递增相反

9.赋值运算符:

运算符术语示例结果
=赋值a=2; b=3;a=2; b=3;
+=加等于a=0; a+=2;a=2;
-=减等于a=5; a-=3;a=2;
*=乘等于a=2; a*=2;a=4;
/=除等于a=4; a/=2;a=2;
%=模等于a=3; a%2;a=1;

10.比较运算符:

运算符术语示例结果
==相等于4 == 30
!=不等于4 != 31
<小于4 < 30
>大于4 > 31
<=小于等于4 <= 30
>=大于等于4 >= 11

11.逻辑运算符:

运算符术语示例结果
!!a如果a为假,则!a为真; 如果a为真,则!a为假。
&&a && b如果a和b都为真,则结果为真,否则为假。
||a || b如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

12.三目运算符:

2>1 ? true : false;

结果为true

13.goto语句:可以无条件跳转语句;如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

语法:goto 标记;如:

    cout << "2" << endl;   

    goto FLAG;
    cout << "3" << endl;

    FLAG:

    cout << "4" << endl;

14.一维数组: 

(1)数据类型 数组名[ 数组长度 ];

(2)数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};如果{}内不足10个数据,剩余数据用0补全

(3)数据类型 数组名[ ] = { 值1,值2 ...};

(4)一维数组名可以用sizeof(数组名) / sizeof(数组名[0]) 统计整个数组在内存中的长度,用   (int)&数组名[0]获取数组在内存中的首地址

15.二维数组:

(1)数据类型 数组名[ 行数 ][ 列数 ];

(2)数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };如:

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

(3)数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};

(4)数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};

(a)二维数组行数:sizeof(数组名) / sizeof(数组名[0]) 

(b)二维数组列数:sizeof(数组名[0]) / sizeof(数组名[0][0])

(c)二维数组首地址:arr

(d)二维数组第一行地址:arr[0]

(e)二维数组第一个元素地址:&arr[0][0]

16.函数:

返回值类型 函数名 (参数列表)
{

       函数体语句

       return表达式

}

总结: 值传递时,形参是修饰不了实参的

17.函数调用:

函数名(参数)

18.函数的声明:

函数的声明可以有多次,但是定义只能有一次,但是函数可支持重载

19.函数的分文件编写:

(1)创建后缀名为.h的头文件

例:

//swap.h文件
#include<iostream>
using namespace std;

//实现两个数字交换的函数声明
void swap(int a, int b);

(2)创建后缀名为.cpp的源文件

例:

//swap.cpp文件
#include "swap.h"

void swap(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
}

(3)在头文件中写函数的声明

(4)在源文件中写函数的定义

例:

//main函数文件
#include "swap.h"
int main() {

    int a = 100;
    int b = 200;
    swap(a, b);

    system("pause");

    return 0;
}

20.指针变量定义语法: 数据类型 * 变量名;

21.指针变量和普通变量的区别:

  • 普通变量存放的是数据,指针变量存放的是地址

  • 指针变量可以通过" * "操作符,操作指针变量指向的内存空间,这个过程称为解引用

  • 总结: 我们可以通过 & 符号 获取变量的地址

                  利用指针可以记录地址

                  对指针变量解引用,可以操作指针指向的内存

22.所有指针类型在32位操作系统下是4个字节

23.空指针:指针变量指向内存中编号为0的空间;作用:初始化指针变量;空指针指向的内存是不可以访问的

例:

int * p = NULL;

cout << *p << endl;

24.野指针:指针变量指向非法的内存空间

例:

//指针变量p指向内存地址编号为0x1100的空间
    int * p = (int *)0x1100;

    cout << *p << endl;

总结:空指针和野指针都不是我们申请的空间。

25.常量指针,const修饰指针 

例:

        int a = 10;
        int b = 10;

        //const修饰的是指针,指针指向可以改,指针指向的值不可以更改
        const int * p1 = &a; 
        p1 = &b; //正确

26.指针常量,const修饰常量 

例:

        //const修饰的是常量,指针指向不可以改,指针指向的值可以更改        

        int a = 10;
        int b = 10;

        int * const p2 = &a;

        *p2 = 100; //正确

27.const即修饰指针,又修饰常量

例:

        const int * const p3 = &a;

技巧:看const右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量

28.结构体:

语法:struct 结构体名 { 结构体成员列表 };

通过结构体创建变量的方式有三种:

  • struct 结构体名 变量名

  • struct 结构体名 变量名 = { 成员1值 , 成员2值...}

  • 定义结构体时顺便创建变量

例:

struct student
{
    //成员列表
    string name;  //姓名
    int age;      //年龄
    int score;    //分数
}

总结1:定义结构体时的关键字是struct,不可省略;创建结构体变量时,关键字struct可以省略;结构体变量利用操作符 ''.'' 访问成员

29.结构体数组:

语法:struct 结构体名 数组名[元素个数] = { {} , {} , ... {} }

struct student
{
    //成员列表
    string name;  //姓名
    int age;      //年龄
    int score;    //分数
}

//结构体数组
    struct student arr[3]=
    {
        {"张三",18,80 },
        {"李四",19,60 },
        {"王五",20,70 }
    };

30.结构体指针:通过指针访问结构体中的成员 ;利用操作符 ->可以通过结构体指针访问结构体属性

31.结构体嵌套:

例:

//学生结构体定义
struct student
{
    //成员列表
    string name;  //姓名
    int age;      //年龄
    int score;    //分数
};

//教师结构体定义
struct teacher
{
    //成员列表
    int id; //职工编号
    string name;  //教师姓名
    int age;   //教师年龄
    struct student stu; //子结构体 学生
};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值