C/C++零基础入门到大神

这篇博客详细介绍了C/C++编程的基础知识,包括Visual Studio的安装、数据类型、运算符、控制流、内存管理、函数、数组、字符串、指针等内容,适合初学者入门。
摘要由CSDN通过智能技术生成

第一天:

Visual Studio 2019下载安装官网地址

Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com)

打开VS2019创建C++控制台运用,

#include<iostream>  //头字是#的是处理指令,这里是包含头文件iostream

std::cout<<" C/C++零基础到大神:\n";

cout理解把“”里面的字符输出到屏幕,双引号里面的是字符,"\n"、"\\" 、" \" "、" \' "、在屏幕上显示的为,

换行、\、" 、'    system函数的用法:("pause")暂停,("cls")清屏,("mode con cols =宽 lines = 高")设置控制台窗口大小,("color")设置控制台窗口的颜色 说明:win+r打开输入cmd 输入mode /? c或者color /? 对应的说明使用。

认识内存1G=1024MB,1MB=1024KB,1KB=1024B,1B=8bit,如数据类型short 2个字节16bit或16位

认识进制16进制0x,8进制0,二进制0b分别代表对应的进制。

 认识常量和变量规定常量的值不会改变,变量的值可能改变,(题外话常量创建出来在内存机制中分配了内存,以后会说明怎么改变常量的数据),C++17写法 :变量的定义:类型 名字 {初始值};常量的定义第1种const 类型 名字{初始值} ,第二种 直接使用值,第三种 #define 名字 值。

认识有符合的整形 char 、signed char 1字节取值范围 -2^8/2  到 + (2^8/2)-1 ;short 、short int 、signed int、signe short、signed short int 2字节取值范围 -2^16/2  到 + (2^16/2)-1 ;int、 signed、signed int 4字节取值范围为 -2^32/2  到 + (2^32/2)-1 ;long 、long int、signed long、signed long int 4字节或者8字节根据编译器的不用,取值范围-2^32/2  到 + (2^32/2)-1或者-2^64/2  到 + (2^64/2)-1 ;long long、long long int、signed long long、signed long long int 8字节取值范围-2^64/2  到 + (2^64/2)-1。

认识无符号的整形 unsigned char 1字节 取值范围0到2^8-1 ;unsigned short 2字节取值范围0到2^16-1 ;unsigned 、unsigned int 4字节 取值范围0到2^32-1;unsigned long 4字节或者8字节取值范围为 0到2^32-1或者0到2^64-1;unsigned long long 8字节 取值范围0到2^64-1

认识布尔类型 bool 1字节取值范围 true或者false

整形字面量的表达  0b+二进制+后缀,0+八进制+后缀,0x+十六进制+后缀;后缀L或者LL或者U分别代表long型,loog long型,无符号型;如ULL代表无符号long long型。

基本的算术运算 加 +,减- ,乘*,除/,模%,100%33=3余1的模就等于1;+=,-=,*=,/=,%=,a+=1相当于a=a+1;少了一个a,把a+1放到临时变量再赋值给a自己,++a,a++,--a,a--分别是a前加加,a后加加,a前减减,a后减减

#include <iostream>
main(){
short a{100};
short b{++a + 10};//a = a+1=101,b=a+10
std::cout<<b;//b=111

short a{100};
short b{a++ + 10};//b = a+10=110,a = a+1=101
std::cout<<b;//b=111

}

认识浮点数(小数)类型有float 4字节,取值范围:大约7位精度±3.4E±38(-3.4*10^38到+3.4*10^38)、double 8字节 取值范围:大约15位精度±1.7E±308、longdouble 8字节 取值范围:大约15位精度±1.7E±308、

浮点数的表达:float 小数后面加f或者F如200.0f,不带后缀的浮点数一律视为double类型,后缀为L的浮点数视为 long double类型

认识类型转换 类型转换顺序从高到低依次是 long double 、double 、float 、unsigned long long 、long long 、unsigned long 、long 、 unsigned int 、int。C++语言的类型转换:static_cast<目标类型>(要转换的内容)如int a = static_cast<int>(b);C语言:类型(要转换的内容)如int(a-b) 。类型占内存=sizeof(类型)。

认识字符 char 内存占1字节 ASCII字符;wchar_t  2字节 宽字节字符;char16_t 2字节 utf_16字符;char32_t 4字节 utf_32字符;初始化{'A'}、{L'A'}、{u'A'}、{U'A'}。(char)10换行,ASCII表

 推断类型 auto 变量名 {初始值};auto ID {10UL}//unsigned long类型;查看一个变量的类型 typeid(变量).name();

格式化输出及转义 补充:引用头文件bitset,输出的数字采用二进制输出std::bitset<要显示的二进制位数:8位,16位或32位……>(要显示的变量);std::boolalpha;可以将流的输出控制位bool类型;

 

 运算符优先级

 认识枚举类型 :enum class 类型名称:基本类型{选项1,选项2};声明一个枚举变量:类型,名称 变量名称;

注意

1枚举类型可以提高代码的可读性和安全性

2枚举类型默认是int类型

3枚举类型成员只能是整数类型

4枚举类型和其他类型转换需要强制转换

5默认情况下,枚举类型的下一个项的初始值是上一个项的初始值+1

enum class EquipLv:short {
		normal,
		high ,
		rare,
		epic,
		legend,
		myth
	};
	EquipLv weaponcLv{EquipLv::legend};//申明一个枚举的变量并初始化
	std::cout << static_cast<int>(weaponcLv);

认识自定义变量名称,给给类型改名的三种方式:⑴、#define A TypeName//以后代码中的A可以被替换为TypeName ⑵、typedef TypeName A//以后TypeName类型的名字可以用A替换⑶using A=TypeName;//以后TypeName类型的名字可以用A代替

认识命名空间:

//创建命名空间
namespace game 
{
   int Hp{1000};
   
   namespace wuqi
   {
      int damage{300};
     
   }

}

int main()
{
   //使用命名空间
   using game::Hp//以后就不用输入game::Hp,直接Hp就能使用
   game::wuqi::damage;


}//命名空间的潜规则,1、不能放在函数体内 2、可以在一个命名空间嵌入另一个命名空间 3、子级命名空间调用父级命名空间依然需要限定符::

认识变量的生命周期:

1、代码块的变量的生命从声明开始,直到这个代码块结束
2、声明在代码开始之前的变量叫做全局变量,全局变量的生命从程序运行开始,直到程序退出
3、在变量名冲突的情况下,采用就近原则
4、要访问名称冲突的全局变量,可以使用限定符::来访问
int a{100};//定义的全局变量,程序结束a销毁

int main()
{
     int a{4};
     {

        int a{350};
        {
            char a='A';
            std::cout<<a;//输出的是A,就近原则
        }



     }
}
  • 数据和计算补充知识位运算之异或运算^,a^b=c,a^c=b,b^c=a;
a=0b01110010;//0b表示二进制
b=0b10110001;
c=a^b=0b11000011;//^算法相同的数为0,不用的为1, 

认识自定义数据类型 结构体

//定义
struct 名称
{
    类型 名称
};
1、结构体的本子是按照我们自己的方式定义一块连续的内存的结构
2、声明一个结构变量的本质是向计算机申请一块内存,而这块内存的大小,至少是我们定义的结构
成员需要占用的内存之和。
使用结构则是按照我们定义好的方式从这块内存读取和写入数据

struct zhuangbei//我的装备
    {
        char hujialv{5};//护甲初始的等级
        char hujiale{5};//护甲强化等级

    }
struct me
{
    char nvpengyou{'w'};//我的女朋友姓王
    int  money{-1000};//我的存款
    zhuangbei dengji{100,100};//我的装备
    
}
int main()
{
    //结构的使用 结构名 变量名称{初始化}
    me urse{'Y',10};
    urse.money;//名称.成员来访问
}

认识位运算

//  位运算之左移<<n 等同于*2^n, 右移>>n 等用于/2^n;
//  11111111 <<2 11111100//11111111左移2位前面的11往下掉2个后面补2个0
//  3 的二进制表示 0b00000011 -3的二进制 0b11111101 3的二进制取反再加1  原先0变1,1变0.
//  求反运算符~ ~0b11110000 等于0b00001111 原先0变1,1变0.
//  &与运算 0b10111011&0b10110100 等于0b10110000 两个都是1取1,两个是0或者一个0一个1取0
//  |或运算 0b10111011&0b10110100 等于10111111  只要有1个1就取1
//  ^异或运算 0b10111011&0b10110100 等于0b00001111 两个不一样取1,两个相同取0


认识关系运算符:>大于 ; <小于 ;>=大于等于 ;  <=小于等于;   ==等于 ;  !=不等于。注意:=是赋值运算符 A=B;表示把B的值赋给A内存的角度来讲,就是把B的值写到A的内存空间去;==是表示关系的运算符 A==B 表示A和B的值相等 如果A和B真的相等 那么(A==B) true 否则A==B是伪命题 即false .注意bool和int之间的互换 bool bA{},bA1{-1};bA等于false,bA1等于true,所有不为0的bool值一律是true包括负数

认识if:

if(bool 表达式)语句;

或者

if(bool 表达式)//条件为真执行语句块内容,条件为假跳过
{
   语句;
   语句;
}
if(值) if(b)//b不等于0 if(!b)//b等于0 
if(a=b)//本质取决于b的值
//项目设计设计一个程序,要求用户输入一个字符,判断这个字符是数字,还是字母,如果是字母,那么是大写字母,还是小写字母,如果是小写字母,那么把这个字母变成大写字母,反之变成小写字母。同时要把判断结果显示出来提示:参考ASCII码表
if(userin>47)
 	{ 
 		if (userin < 58) std::cout << "您输入的是数字:" << userin;
 		if (userin > 64)
 			if (userin < 91) std::cout << "您输入的是大写字母"<<userin<<"转换小写字母:" << char(userin + 32) << (char)10;
 		if (userin > 96)
 			if (userin < 123) std::cout << "您输入的是小写字母"<<userin<<"转换大写字母:" << char(userin - 32) << (char)10;
 	}

认识if..else

if(bool 表达式)语句;
else 语句;

或者

if(bool 表达式)
{
    语句;
    语句;
}
else
{
    语句;
    语句;
}


int b(2);
if(a==1) 
    if(b==2) srd::cout<<2;
else
std::cout<<3;//else对应的if(b==2)就近原则

认识逻辑运算符 &&逻辑与  a&&b a和b都为true时表达式为true;||逻辑或  a||b a和b其中任意一个为true时表达式为true;!逻辑非!a a为false时!a为true 。注意1、一元运算符的优先级要大于二元运算符 2、位运算大于逻辑运算 3、~!>&>|。if(a&&b)a和b都不等于0、if(a||b)a和b至少有一个不等于0、if(!a)a等于0

认识条件运算符:

x=bool?y:z; 等同于 if(bool)x=y;else x=z; 

if(a^b)

等同

if(((a==true)&&(b==false))||(a==false)&&(b==true))
if((a==true||b==true)&&!(a==true&&b==true))

    字符处理:

认识switch

switch(值)
{
   case 选项1:
      break;//不写break继续往下执行选项二
   case 选项2:
      break;
   case 选项3://选项3选项4一样的情况
     [[fallthrough]];//c++17升级内容,告诉编译器我是故意这样不写break
   case 选项4:
      break;
   default:
      break;

}

语句块中的变量

if中临时变量的声明     switch中临时变量的声明            C++17新语法
if(条件)              switch(值)                       switch(变量声明;值)
{                     {                                {
   变量声明;             类型 变量声明;//错误            case 选项:
}                        case 选项:                        break;
else                       类型 变量声明;//错误          case 选项:
{                          break;                          break;
   变量声明;             case 选项:                     }
}                        {//要用括号
                            类型 变量声明;//正确
C++17新语法                  break;
if(变量声明;条件)         }
{                         default:
                             break;
}                      }
else
{

}

认识goto

// goto语法
// 标签:
// goto 标签;
//搭配if来使用
char a;
linput:
std::cout<<"请输入一个大写字母,我们将给您转换为小写\n";
std::cin>>a;
if(a>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值