【00-初识C++ 学习备忘录】(持续更新,点到为止)

  • Post author:
  • Post category:其他


【【【如有错误纰漏,敬请批评指正】】】

【运算符】


||

&&


% 取余数(取模)

【C语言常用的数据类型】

int 存放整数  %d -2147483648~2147483648

float

存放浮点数  %f ±1.18×10^-38~±3.4×10^38
double 存放极大或极小浮点数  %lf ±2.23×10^-308~±1.80×10^308
char 存放字符  %c 256种字符
short  短整型        long  长整型        long  long        长长整型
%s  存放字符串        %p  专门用来打印地址            %u  无符号整型

【名词解释与问题解决】


局部变量

:在主函数{}





的形如 int a = 100;不建议将二者名称取一样


全局变量

:  在主函数{}





的形如 int a = 100;二者名称冲突时,局部优先(在整个工程都可使用(可能需要声明))


scanf

函数报错的解决办法和原因:将

#define _CRT_SECURE_NO_WARNINGS 1

放在代码第一行;原因:提示用于替换的scanf_s是VS编译提供的,不是C语言标准规定的,不利于其他编译器;或者直接将scanf_s替换scanf书写,能解一时之急;

作用域:变量生效的作用范围)


局部变量的作用域

:变量所在局部范围


全局变量的作用域

:整个工程(跨文件需要声明变量 extern···)

生命周期:变量的创建和销毁之间的时间段


局部变量的生命周期

:进入局部范围开始,出局部范围结束


全局变量的生命周期

:程序的生命周期


常量



字面常量

(3,123,6.6,‘c’,“sadsad”);


const修饰的常变量

(本质上还是变量):具有常属性(不能够改变的属性);


#define定义的标识符常量

(#define MAX 1000;);


枚举常量

(可以一一列举的常量)


字符串

:双引号引起的一串字符称为字符串字面值(简称字符串),字符串的结束标志为 \0 ,仅作为结束标志,不作为内容。

转义字符:转变了这个字符原有的意思(例如“\n”本身表示一个\和一个字母n,但不说明则表示为换行)

\ddd        ddd表示三个1~3个8进制的数字 如\130

\xdd        dd表示1~2个16进制的数字 如\x26,\x45等等




Ascll完整码表(256个)_加油当当的博客-CSDN博客_acill



https://blog.csdn.net/jiayoudangdang/article/details/79828853?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164899375916780366535141%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164899375916780366535141&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-79828853.142%5Ev5%5Epc_search_insert_es_download,157%5Ev4%5Econtrol&utm_term=ascll%E7%A0%81%E8%A1%A8&spm=1018.2226.3001.4187


注释:用来解释复杂代码,方便自己和他人阅读理解所写代码 ,常用//(C++注释风格),少用/* */(C语言注释风格,应为不支持嵌套注释)


函数

数组:一组相同类型的元素的集合

10个整形1~10存起来:

int arr [10] = {1,2,3,4,5,6,7,8,9,10};//其中arr是整形数组的名称,也可叫其他的xxx;[ num ] num代表的是元素的个数,元素个数外加[  ]

存储字母abc:

char ch[5]={'a','b','c'};//本来该输入5个元素,但实际输入了3个,称作不完全初始化,剩余的默认为0,

操作符

算数操作符:+  –  *  /  %(取模,也叫取余数)

移位操作符:>>  <<(左移操作符。二进制向左移动一位)

int a = 1
int b = a << 1
printf("%d",b);//这里输出b等于4
//<<表示二进制向左移动一位
//a=1,1的二进制表示为10;一个数有32位,即[00000000000000000000000000000010];
//向左移动一位即  0[0000000000000000000000000000010_(空缺一位)]整体左移,空缺的补上0;
//结果为二进制100,即4;

位操作符:

&  按位与        |  按位或        ^  按位异或

赋值操作符:

=        +=        %=

a=a+4;
a+=4;//两种形式表达意思一致,+=位复合赋值符

单目操作符:

!逻辑反操作

int a=1;
printf("%d",!a);
//C语言规定0为假,非0为真
//输出的是0    定义a=0时,输出1

+  正值      –  负值        就是你想的哪种正代表正,负代表负;          &  取地址操作符

…->…箭头操作符    结构体指针->成员变量名

. 找成员变量操作符

struct Student //创建一个学生的类型
{
	char name[20];
	int age;
	double score;
};

int main()
{
	struct Student s = { "张三",20,85.5 };//结构体的创建和初始化
	printf("%s %d %lf\n", s.name, s.age, s.score);//结构体变量 . 成员变量

	return 0;
}

*  解引用操作符

int main()
{
	int a = 10;
	int* pa = &a;
	*pa = 20;// *叫解引用操作符|*pa就是通过pa里面的地址来找到a
	printf("%d", a);//这里没有通过直接修改a的值
	//这里通过找到a的地址,找到a,再间接修改a的取值
	return 0;
}

sizeof:计算某个变量或者类型的大小

int a=10;
printf("%d",sizeof(a));//a左右的括号最好不要删去
//输出结果为4

sizeof 操作数的类型长度



计算一个数组中的元素个数(sizeof简单应用)_DANIEL_DM的博客-CSDN博客



https://blog.csdn.net/chijijixiaozhang/article/details/123955204


~        按(二进制)位取反

int a=0;//
printf("%d",~a);//~表示按照二进制位按位取反,
//输出结果为-1

一个整数的二进制表达方式有三种

举例  -1

10000000000000000000000000000001(原码,最前面的1表示为负)

1111111111111111111111111111111111110(反码)

1111111111111111111111111111111111111(补码,反码最后一位加1)

整数在内存中存储的是补码

注意正整数的原码,反码,补码,三码一样;

负整数同举例变化规则

++        —        分为前置++,后置++(–同理)

int a=10;
int b=++a;//++a 表示前置++,先++,后使用,++表示原数加1
printf("%d",a);//11
printf("%d",b);//11

int a=10;
int b=a++;//a++ 表示后置++,先使用,后++
printf("%d",a);//11
printf("%d",b);//10

(类型)        强制类型转换

int a=3.14;
printf("%d",a);//这里编译时会提示,造成精度下降

int a=(int)3.14;
printf("%d",a);//这样进行类型强制转换,下方不会提示

关系操作符        >  <  >=  <=  ==  !=

逻辑操作符        &&  逻辑与        ||  逻辑或


条件操作符(三目操作符)

exp1?  exp2:exp3

意思为  如果exp1成立的话,exp2计算,整个表达式的结果是exp2的结果;

如果exp1不成立的话,exp3计算,整个表达式的结果是exp3的结果;

int a=1;b=3
int max=0;
max=a>b?a:b;//if (a>b) max = a;else  max = b;

逗号表达式  exp1,exp2,exp3,…,expn

int a = 0; b = 3; c = 5;
int d=(a=b+2,c=a-4,b=c+2);//逗号表达式是从左到右依次计算
//整个表达式的结果,是最后一个表达式的结果
printf("%d",d);//d==3

[  ]    下标引用操作符        (  )函数调用操作符


常见关键字

auto(通常在局部变量前省略,自动创建,自动销毁;新C语言语法有其他用法暂不考虑) break(停止)   case  char  const   continue  default(默认)  do   double else  enum(枚举)   extern(声明外部符号) float  for   goto  if   int   long  register(寄存器关键字,大量频繁使用的数据可放在寄存器中,提升效率)    return   short  signed(有符号的) sizeof   static struct(创建结构体操作符)  switch  typedef union(联合体/共用体)  unsigned   void(无/空)  volatile(C语言中暂时不讲)  while

define  include  不属于关键字,是预处理命令

typedef        类型重定义

typedef int iit;//这里的typedef相当于将int重命名一下,下面输入iit和int效果一样
int main()
{
    int num=100;
    return 0;
}

static(静态的)        修饰变量和函数

1 static修饰局部变量

【static修饰局部变量】简单说明_DANIEL_DM的博客-CSDN博客

p22 12:54

2 static修饰全局变量

【static修饰全局变量】简单说明_DANIEL_DM的博客-CSDN博客

3 static修饰函数(同上)


#define定义常量和宏

define是一个预处理指令

1.define定义常量

#define MAX=100//define定义常量,这里定义标志符MAX=100
int main()
{
    printf("%d".MAX);//直接打印出100
    return 0;
}

2.define定义宏

//代码1
#define ADD(X,Y) ((X)+(Y))//括号里面套括号,说明是一个整体
int main()
{
    printf("%d",4*ADD(2,3));//打印出20,4*(2+3)
    return 0;
}

//代码2
#define ADD(X,Y) X+Y//没有括号
int mian()
{
    printf("%d",4*ADD(2,3));//计算时为4*2+3=11
    return 0;
}

指针:指针就是内存单元的地址

了解指针前,先了解一下指针

内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,

每个内存单元的大小是1个字节(byte)  (1字节=8bit )

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该

内存单元的地址

内存是怎么编号的?

32位–32个地址线–物理线–通电–1/0

电信号转换为数字信号  1和0组成的二进制序列

00000000000000000000000000000000

01111111  11111111  111111111  1111111

10000000000000000000000000000000

11111111  11111111  11111111  11111111//用二进制序列来编号

指针变量 用来存放地址的变量

int main()
{
	int a = 10;//a在内存中分配的空间为4个字节
	printf("%p", &a);//%p是专门用来打印地址的
	int * pa = &a;//pa是用来存放地址的,在C语言中pa叫作指针变量
	//  * 说明pa是指针变量
	//  int 说明pa执行的对象是int类型的

	return 0;
}

指针的大小

指针的大小都是一样的–指针是用来储存地址的,指针需要多大空间,取决于地址的存储需要多大空间

32位        32bit        4byte

64位        64bit        8byte

指针大小在32(x86)位平台是4个字节,在64(x64)位平台是8个字节

结构体:使得C语言有能力描述复杂类型;创建出新的类型出来




结构体简单说明(struct 和.操作符举例)_DANIEL_DM的博客-CSDN博客



https://blog.csdn.net/chijijixiaozhang/article/details/124098675



//本章完//

【更新日志】

2022年4月11日

简单说明结构体,增加对  .  ->  操作符的说明

2022年4月10日

简单说明  #define定义常量和宏  和  指针变量 指针大小 内存简单说明

2022年4月4日

解释  数组  操作符

2022年4月3日

解释“转义字符”  “注释”

2022年4月2日

解释了“作用域”  “生命周期”  常量的几种类型

发现还有【块引用】功能,牛啊,文本看起来更加又秩序

2022年4月1日

更新数据类型short long等;

添加名词解释与问题解决栏目,解释了“局部变量”“全局变量”,说明了scanf函数报错

2022年3月30日

更新运算符及其表格

2022年6月28日

更新了一些正确的错误



版权声明:本文为chijijixiaozhang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。