189 8069 5689

【C++期末复习】细节点总结(3~4章函数、数组)-创新互联

这是一份不求全只求精的知识点总结,虽然不能cover所有的知识点,但是笔者希望它防范出题老师的阴间操作。

创新互联是一家专注于成都网站制作、成都网站设计、外贸营销网站建设与策划设计,东明网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:东明等地区。东明做网站价格咨询:18982081108优先级

从大到小(部分):()>单目(非/正负号/&*/sizeof/动态存储)>算数运算符(先乘除后加减)>移位>关系运算符(先><后等于不等于)>按位(非与或,但非的优先级在单目运算符)>逻辑运算符(逻辑非与或,但非的优先级在单目运算符)>三目运算符>赋值运算符>逗号
Attention:

cout<< ~a<< endl;//合法,!(逻辑非)同理.
//但除非以外的算术、关系及逻辑运算符优先级低于输入输出符
指针数组与数组指针
//理解性记忆:括号优先级最高,括号内先结合
const int N;
int *a[N]
//a先与[N]结合,被定义为数组,数组中的成员再被定义为int*类型
//成员为指针的数组,数组中含有N个int*类的指针
int (*a)[N]
//括号内a先与int*结合,被定义为指针,
//指向含有N个元素的数组的指针,存储第一个数的地址
//类型为int*[N]
动态数组及向量(机试推荐,个人偏好)

当我们想读入n个数据时,由于数组限定元素个数为常数,所以选用动态数组以及向量可以让我们迅速做好数据读取。
需要注意的是由于向量的元素数量可以改动,所以在用向量时需要关注向量size的变化,不然容易导致向量越界。

//动态数组
int n;
while(cin >>n)
{int *a = new int[n];
    for(int i = 0;i< n;i++)
    {cin >>a[i];
    }
}

//向量
#include//向量声明头文件

vectorv;
int n;
while(cin >>n)
{  for(int i = 0;i< n;i++)
          int num;
          v.push_back(num);
}

//向量常用操作
//数组已定义操作(如下标访问,但地址访问作者表示实在不懂)
 v.insert(v.begin()+n,m,num);
//在v[n]前插入m个值为n的元素
 vectorv1,v2;
 v1.insert(v1.begin(),v2.begin(),v2.begin()+n)
 //将v2.begin()和v2.end()之间的元素插入v1.begin()之前
//保守起见,请不要用下标等操作代替.begin()
 v.erase(v.begin()+m,v.begin+n)
//删除从v.begin()到v.end()之间的元素,后面的元素前移
//比较运算符与赋值运算符
*与&

在这里插入图片描述

Attention
1、对于函数f(),*****f合法,&&&&f非法
2、对于数组a[],****a及&&&&a均非法

C字符串 字符指针与字符数组
char s1[50] = "sdfafer";
	//可在定义时赋初值
	//之后不可再对s1赋值
	//但可以cin >>s1;
	const char* s2 = "sdfdsf";
	//老题目可能允许没有const,但近几年的VS不允许
	//定义后可再修改
	//但不可cin >>s2;
sizeof与strlen
char s1[50] = "e2e2e\0wefdfds";
    cout<< sizeof(s1);
    //对于char输出字符数,而非所占字节数,这里与int等不同
    //不受\0影响
    //注意输出的是数组长度50

    cout<< strlen(s1);
    //输出字符数,但会受\0影响打断
    //不会将\0及之后的字符计入长度,故输出5
    
    const char *s1 = "sdfa\0fer";
	cout<< sizeof(s1);
	//输出指针所占内存大小,故输出8;
	cout<< strlen(s1);
	//对于strlen,字符数组与字符指针输出结果一致
含空格输入
char cstr[10];
gets(cstr);//vs15后不可用
gets_s(cstr,size);
cin.getline(cstr,size);
getline(cin,str_obj);
第三章(函数)杂谈 函数指针与指针函数
int* f();
//f为整型指针函数,返回值为int*类型
int (*f)(int x,int y)
//f先与int*结合,被定义为指针
//这个指针被要求指向一个int (int,int)型的函数,即被指向的函数返回值为int型,参数表为(int,int)否则语法错误
//e.x.
   int f1(int,int);
   f = f1;//合法
关于语句标号、作用域与重载

简单抄书,盲猜笔试会考一道
语句标号:用一个标识符表示程序中的某一行,用标号名加冒号组成。
e.x. case,goto
语句标号是唯一具有函数作用域的标识符

局部变量具有块作用域,函数参数的默认值不允许为局部变量。
全局变量具有文件作用域。程序的其他文件也能访问全局变量,但必须在使用该全局变量的每个文件用extern声明。

重载函数参数表不同,返回值类型相同

//e.x.
int f();
double f();
//返回值不同,不允许重载,编译错误
机试推荐

1.洛谷入门题单
2.软院选拔赛2 a,b,d题,ab题前几个点ac即可
https://www.luogu.com.cn/contest/93583

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:【C++期末复习】细节点总结(3~4章函数、数组)-创新互联
网页URL:http://cdxtjz.com/article/jjpho.html

其他资讯