【C++】小知识点总结

一、基本数据类型与运算符

1.字符常量与字符串常量

ljh74I.png
字符型常量和字符串常量的区别?

1)形式上:

字符常量是单引号引起的一个字符

字符串常量是双引号引起的若干个字符

2)含义上:

字符常量相当于一个整形值(ASCII值),可以参加表达式运算

字符串常量代表一个地址值(该字符串在内存中存放位置)

3)占内存大小

字符常量只占一个字节

字符串常量占若干个字节(至少一个字符结束标志)

2.数值常量的表示

(1)整型常量

十进制:由0~9组成,第一个数字不能为0

八进制:以0开头

十六进制:以0x(或0X)开头

(2)实型常量

实型常量就是浮点数,分为十进制小数形式指数形式两种。

小数形式

一般由整数部分和小数部分组成,也可以省略其中一部分

如:”3.“”3.0“     ”.1415“”0.1415“

指数形式

<数符>数字部分E指数部分

如:0.31415E1==0.31415*10^1

注:

  1. 不论把实型数写成小数形式还是指数形式,在内存中它们总是以指数形式存储。
  2. 所谓规范化的指数形式,数字部分必须小于1,同时小数点后面第一个数字必须是一个非0数字

3.数据类型与所占空间大小

名称实例字节数/B
整型04
浮点型0.08
字符型‘0’1
字符串型“0”2

验证一下

#include<iostream>
using namespace std; 
int main() 
{
  int a=0; 
  double c=0.0; 
  char b='0'; 
  char d[]="0";
  cout<<sizeof(a)<<endl;
  cout<<sizeof(c)<<endl;
  cout<<sizeof(b)<<endl;
  cout<<sizeof(d); 
}

输出结果如下

4
8
1
2

4.自增自减,膜运算,逗号表达式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C9ggRlaD-1579607226329)(https://s2.ax1x.com/2020/01/16/ljTTpR.png)]

  1. ++、–运算符操作数必须为变量,不能是表达式

  2. %运算符(模运算)操作数必须是整型,结果也为整型数

  3. 逗号表达式,依次计算,整体的值为最后结果

先赋值b=3,所以b的值是3,再计算b+1,b+2,由于没有再进行赋值运算,所以b的值还是3,不过整体表达式的值是最后的值。你可以这样测试 a=(b=3,b+1,b+2);你会发现输出的a是5

5.i+=j+=2

程序片段如下

#include<iostream>
using namespace std; 
int main() 
{
  int i=1,j=1; 
  i+=j+=2;//i=i+j+2
  cout<<i;
}

输出结果为

4

从左向右计算

i=i+j+=2

j=j+2

i=i+j+2

二、for函数的三个参数

ljHTL6.png
代码运行一下

#include<iostream>
using namespace std; 
int main() 
{
  int i; 
  for(i=1;i++<4;);
  cout<<i;
}

运行结果

5

第三条语句可以省略

因为第二条语句中含有变量i的自增变化

三、数组的初始化

一维数组

一维数组的初始化应放在花括号内,一般称为初始化列表。

说明

  1. 花括号里的元素值按位置一次赋给每个元素

  2. 当定义数组是没有给出数组的大小,但给出了初始化列表,那么数组的长度就由表中元素的个数来确定。

    int a[]={‘1’,‘2’,‘3’}

  3. 当定义数组时给出了具体长度,那么在初始化时不允许列表中的元素个数超出指定的长度

  4. 当定义数组时给出了具体长度,在初始化时允许列表中的元素个数小于定义的大小,而剩余的元素将被初始化为0.

二维数组

初始化二维数组时,可以不给出第一维(行)大小

定义二维数组为形参时,可以不给出第一维(行)大小,但必须给出第二维(列)大小

字符数组

1.利用字符常量进行初始化

char c[4]={'a','b','c','d'};   // 全部初始化

char c[4]={'a','b','c'};   // 部分初始化,c[3]='\0'

2.利用字符串进行初始化

char c[]={"SYolin"};   //字符串初始化

char c[]="SYolin";     //或者去掉{}

特别注意

在用字符串赋初值是,字符数组定义的大小至少要比字符串的长度多占1B,用于编译系统放置’\0’

char[6]="SYolin";     //错误!用于初始化的元素超过了6!

ljXu34.png

答案:B

四、动态开辟

**特点:**开辟出的空间没有名字——>以指针为载体

int num;
char *p=new char[num];   //动态开辟数组
delete []char;          //回收数组

**注意:**动态开辟不能初始化

int *p= new int[10]={0};         //错误!
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值