复合类型以及函数总结

                                                     复合类型

For循环的另一形式:
先定义一个函数,例如int p[100];然后for(auto a:p),:的左面定义一个变量,右边则是数组的名字,这条语句的意思便是将p数组的所有的元素输出来。作用就是可以在不知道数组的大小的时候将数组中所有的元素输出。
指针:定义指针变量:指针的类型 指针名;使指针指向一个变量: 指针名=&变量名;变量的类型和指针的类型应该相同,此时*指针就相当与这个变量,例如 int *a=&m; *a=k;则是将k的值赋给m;另外还可以定义指向指针的指针:例如int**p=*a;
定义const指针:
1.coonst 类型 *指针;此时指针所指向的可以是一个整型变量,也可以是一个常变量,但不能通过这个指针来改变对应的变量的值,但是变量本身可以改变(不通过指针)。
2. 类型 const 指针;这种方式定义的指针地址只能是固定的不可以再进行改变。
3. .const 类型
const 指针:指针指向的内存不能改变,并且指针指向的值不能进行改变。动态对象:动态对象不像静态对象,动态对象是没有名字的,通过指针间接操作。 new 定义变量:int *p=new 动态对象的类型(其中动态对象的初始值);删除时:delete 指针;定义数组:int *p=new int[100];删除:delete [] 指针;定义指针:需要调用头文件删除之后的指针不可以在进行使用。
引用:
左值引用
&代表左值引用,左值引用的是表达式结束后仍存在的值,既是左值引用的必有地址,左值引用时可以引用变量,但变量必须先进行定义。例如 int a=1;int&p=a;
右值引用:
&&代表的是右值引用,右值引用可以引用表达式或者是具体的某个值,例如0;此类都是无法取址的,像例如a++是右值引用,而像++a则是左值引用。
结构体:
定义的方式:Struct 结构体名字 { 结构体成员 };切记最后有一个;。定义一个结构体变量直接可以 结构体名字 变量名。输入输出时要通过指针来输出结构体中的各元素;例如:struct kl{ Int a; };输出时则是cout<<kl.a;联合: 联合的定义方式与结构体相似,用union代替struct。但是联合应用时只可使用一个成员。
枚举: 定义时使用enum定义的是不限定作用域的枚举,而enum class或enum struct定义的则是限定作用域的枚举,限定作用域的优点是可以在不同的作用域内设定同样的成员名字,而不限定作用域的枚举则不能这样。
定义时例如:enum light{red,green,yellow};默认的这三个的值是0,1,2;也可以自己设定枚举中成员的值;例 enum light{red=2,green=6,yellow=88};枚举的其中一个用处可以在switch中使用,case后面所跟得值也可以是枚举定义的成员,从而更明了表示一种可能。
数组: 定义方式1 数组类型 数组名[数组大小];
2 数组类型 数组名[]={数组中元素};
3 char 数组名[]=”字符串”;
数组包括的元素为字符串中的字符和最后一个元素\0;切记一个数组不可以被另一个数组初始化。多为数组的初始化也可以,类似于一维数组的初始化方式。通过for语句和数组元素的下标访问数组元素时可以定义下标为size_t类型,然后通过for循环的方式访问数组中的所有元素。for(int e:数组名)这种方式来访问数组中的所有元素,若要改变数组中所有的元素需将语句修改为for(int &e:数组名)。也可以通过指针来访问数组的元素,定义数组的时候数组名的地址自定义为数组中第一个元素的地址,则访问数组的所有元素时可以通过for(int p=a;p<p+10;p++)
{ Cout<<*p; }
decltype关键字可以提取变量的类型来定义另一个变量的类型,
例:int a; decltype(a) l;这样l的类型就和a的类型是相同的。
也可以通过迭代器来访问数组中的每一个元素。头文件是,有两个关键词,begin(),end(),括号内是数组名。
字符串
Char类型的字符串在头文件有几个函数,
strlen()返回字符串的长度。Strcmp(p1,p2)判断p1,p2的关系,若等于则返回0,大于则返回正值,小于则返回负值。
Strcat(p1,p2)将后者附加到前者后面,并返回前者的值。
Strcpy(p1,p2)将后者复制到前者后面,并返回前者的值。
String:头文件。定义:string n;若是定义相同的多个元素组成的字符串,则可以string l(n,’l’);函数:getline(is,s)通过输入流把其中的一行输入到s中。
s.empty()判断字符串s 是否为空。s.size();返回s中字符个数。
s.c.str() 将字符串转换为字符数组。string类的变量比较是通过字典序进行比较。相加则是将后者连接在前者之后。访问string类的变量,可以通过变量名[下标]来访问,字符串中元素以0为第一个字符的位置,最终以’\0’结尾。
vector:
定义:vector<容器中的数据类型>变量名;
vectorv1(v2);v1中的成员与v2的成员相同。
vectorv(n,l);v中的成员是n个同样的l。
vectorv=v1;v相当于v1.
vectorv={m,n,b,n,m};v中的成员是大括号中成员。
函数:
Empty() 判断容器是否为空是则返回true否则返回false
Size() 容器中元素数量 push_back() 向容器尾端中添加元素
pop_back() 删除容器尾端中的元素
v={a,b,c} 用大括号中的元素代替vector中的元素
v.at(n) 在范围内返回值与v[n]相同,范围值外会报错
不可以通过v[n]这种方式向vector中添加元素。
迭代器:
例如一个vector的变量v,在用迭代器访问所有元素
vector::iterator it;
for(it=v.begin();it!=v.end();it++)
{cout<<it;//解引用,返回迭代器所指的元素 }
It->mem 解引用,获取该元素成员mem
It==it1 相等则说明指示为同一个元素或是同一个容器的尾后迭代器,不等则反之。
++it指向 it的下一个元素
–it 指向it的上一个元素
It-it1同一容器两迭代器之间的距离允许迭代器加减n仍然代表迭代器加法与减法的赋值运算同样允许。同一容器中两个迭代器,一个迭代器指向的位置前于另一个迭代器,则前者小于后者。而迭代器也分为许多种,上面的迭代器可以读写并访问容器中所有的元素。
string::iterator it 之可以读写容器中的string元素。
vector::const_iterator it可以读容器中的元素,但不可以写
string::const_iterator it 可以读容器中的所有字符但不能写文件读写
将文件中的数据输入到程序中,需要先设计一个程序,名为文件
可以以这样的方式输入数据c:>文件<向外输出数据的文件>向其中输入数据文件名
标准输入输出流
头文件
Ifstream 输入文件的输入流
ofstream 输出文件的输出流
例如 #include
using namespace std;
int main()
{ ifstream in(“要输入数据文件的地址.文件的类型”);\同时定义对象和打开文件
int num;
in>>number;\在文件中向外输入数据到number
in.close(); 输入数据完成之后需要关闭输入流
ofstream out;定义输出的对象
out.open(“要输出数据文件的地址.文件的类型”);打开指定的文件,若文件不存在则会创建此文件
out<<number;将刚刚输入的number输出到指定文件中
out.close();输出完成后需要将输出流关闭
}
字符串流: 头文件
Istringstream 从string对象中输入数据
Ostringstream 向string对象中输出数据
例如 getline(cin,buffer) istringstream is(buffer);从buffer中输入数据
is>>number;ostringstream f(“ “);定义输出的对象f
f<<number; 将number输出到f中
函数
定义函数:
函数返回值类型
函数名(行参类型 形参名)
{ 函数内的内容 }
void类型的函数无返回值。
函数若是写在主函数之后必须在主函数之前对函数进行声明。例如: Int po(int i);
递归函数:递归函数是直接或间接调用自己的函数,例如在计算阶乘时可以使用递归函数例如
int p(int n){
If (n>1)
{ return n
p(n-1);}
}
参数传递传值和传引用传值时,实参和形参是两个独立的对象,即行参在函数中的变化并不影响实参的变化,在传引用时实参和形参被绑定在一起,即行参的变化也会引起实参的变化。
传值的引用例如 int po(int p) {}这样定义的函数是传值,即实参和形参为两个独立的对象。
int po(int &p)这样定义的函数是传址引用,即实参和形参是绑定在一起。
int po(int * p)传指针的函数,行参与实参也是绑定在一起
数组参数
定义时不表明数组长度
Int po(int p[]){}
二维数组
Int po(int p[][10])需要标明行的长度
{}
返回引用
将函数的返回值进行操作
例如:const string &po(const string &U)
{ Return U;}
cout<<po(n); 因为是传址,u与n绑定在一起,此时输出的就是n本身,可以对函数进行操作,既是对n操作。
函数重载:即函数有着一样的函数名,但其中形参不同类型;例如
int k(int a);
Void k(int m);
Int k(const int m);
函数有着相同的名字,但在引用时函数会根据实参而选择适合的形参的函数进行处理,或则选择最合适的函数进行操作。静态局部变量与局部变量的区别就是静态对象会一直存在,但是局部变量会在使用范围之后消失,定义静态对象可用static定义,例如static int a;
Register 可以定义寄存器变量,寄存器变量的优点可以加速程序运行速度,定义register int a;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王不头秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值