课程网站建设规划方案,怎么上百度推广产品,影视公司招聘,响应式网站建设咨询文章目录 四. C中的字符串4.1 C支持两种风格的字符串4.2 string类型的赋值和初始化4.3 C风格和C风格的字符串互换4.4 string类中三个重要成员函数4.5 string类型的比较4.6 string类型的成员访问 at()6.8 string类型数据的输入 五、bool类型六、引用#xff08;reference#… 文章目录 四. C中的字符串4.1 C支持两种风格的字符串4.2 string类型的赋值和初始化4.3 C风格和C风格的字符串互换4.4 string类中三个重要成员函数4.5 string类型的比较4.6 string类型的成员访问 at()6.8 string类型数据的输入 五、bool类型六、引用reference6.1 引用概念6.2 定义引用6.3 引用的基本使用6.4 引用做形参6.5 引用做返回值6.6 常引用const6.7 结构体中的引用成员 七、引用和指针的区别笔试面试题(重点) 四. C中的字符串
4.1 C支持两种风格的字符串 C语言风格的字符串依然支持使用字符数组的形式存储字符串字符串标志‘\0’ C风格的字符串本质上是string类的对象
使用要求需要加头文件#include
4.2 string类型的赋值和初始化 单个数据的初始化和赋值 方式解释方式1string s2 “ni hao”;方式2string s3(“shang hai”);方式3string s4{“zhangpengpeng”};方式4string s5(5,‘A’);第一个参数是要赋值的个数第二个参数是要辅的值 多个数据的初始化和赋值 方式string s1 “hello world”;拷贝构造函数string s2(s1);使用旧字符串给新字符串初始化string s3 s1;两个字符串连接,给新字符串初始化string s4 s1s2;两个字符串之间直接赋值s1 s4;
4.3 C风格和C风格的字符串互换 C风格的字符串可以无条件转换为C风格字符串原因是C兼容C的语法 C风格的字符串转换为C风格字符串需要调用成员函数c_str、data() 方式C风格字符串转换为c风格字符串调用成员函数strcpy(s1,s2.c_str());s2.c_str()strcpy(s1, s2.data());s2.data()
4.4 string类中三个重要成员函数
函数解释size() / length()求字符串的实际长度,相当于strlenempty()判空clear()清空
4.5 string类型的比较 string类型的比较可以直接使用关系运算符进行比较(如: ) 而C风格的字符串比较只能使用strcmp函数来完成
4.6 string类型的成员访问 at()
方式使用中括号 a[1]‘a’可以使用中括号进行下标访问但是该访问不做越界检查 不友好成员函数at s.at(6)‘a’该访问方式进行下标越界检查 友好的
6.8 string类型数据的输入 不带空格的输入cin 带空格的输入getline()
五、bool类型 C语言不支持bool类型但是C支持 bool类型的值只有两个true(非0数字)、false(0) true和false这两个属于关键字是真和假的常量不可用做标识符 bool类型的数据默认使用数字表示真假如果想要使用单词表示真假则需要加上boolalpha在此之后全部都使用单词表示 如果想要继续使用数字表示真假则需要加上noboolalpha即 bool类型所占内存大小为1字节原则上只需要使用1位即可但是计算机分配资源的基本单位为字节所以给bool类型分配1字节大小空间
六、引用reference
6.1 引用概念 引用是C对C的非常重要的扩充 作用相当于给变量的内存空间重新起个别名。例如宋江 别名及时雨、孝义黑三郎
6.2 定义引用 定义格式数据类型 引用名 引用的目标 //人 及时雨 宋江 举个例子 int num 520; int r num; //此时变量r和变量num是同一个内存空间的两个名字左值引用 总结的用途 两个表示逻辑与运算 作为位运算一个表示按位与运算 作为取地址运算符一个表示取得变量的内存地址 定义引用时是身份的象征表明定义的是引用变量 左值和右值 左值既可以放在等号赋值左侧也可以放在等号右侧的值可以对其进行取地址例如变量 右值只能放在等号右侧的值不能对其取地址例如常量、临时值 使用要求 定义引用时必须用其引用的目标对其进行初始化 引用的目标一旦指定在程序中就不能对其进行更改了 引用与其目标是同一内存空间其大小跟目标一致地址跟目标一致 一个目标可以有多个引用这多个引用都是同一块内存空间的名字
6.3 引用的基本使用
#include iostreamusing namespace std;int main()
{int num 520; // 在内存空间随机申请4字节存放520内存名字叫num// 定义引用目标为numint r num; // 此时r所表示的内存跟num表示的一致cout num num r r endl; // 相等cout num num r r endl; // 相等cout sizeof num sizeof(num) sizeof r sizeof(r) endl; // 相等cout typeid name of num typeid(num).name() endl;cout typeid name of r typeid(r).name() endl; // iint key 1314;r key; // 该语句合法但是不是将引用改变目标而是将key值赋值给rcout num num r r key key endl; // 相等cout num num r r key key endl;int f r; // 两个引用指向同一个目标cout num num r r f f endl; // 相等cout num num r r f f endl; // 相等return 0;
}
6.4 引用做形参
由于引用的引入当作为函数参数传递时就无需考虑值传递和地址传递的问题了无论是主调函数还是被调函数使用的都是实参本身
#include iostreamusing namespace std;
// 定义功能1函数
void fun1(int m, int n)
{// 定义交换变量int temp m;m n;n temp;cout fun1:: m m n n endl; // 1314 520
}// 定义功能函数2
void fun2(int *p, int *q)
{int *temp;temp p;p q;q temp;cout fun2:: *p *p *q *q endl; // 1314 520
}// 定义功能函数3
void fun3(int *p, int *q)
{int temp;temp *p;*p *q;*q temp;cout fun3:: *p *p *q *q endl; // 1314 520
}// 定义功能函数4
void fun4(int m, int n)
{// 定义交换变量int temp m;m n;n temp;cout fun4:: m m n n endl; // 520 1314
}int main()
{int m 520;int n 1314;// 调用交换函数 传递值 --- 值传递fun1(m, n);cout main :: m m n n endl; // 520 1314// 调用交换函数 传递地址 --- 值传递fun2(m, n);cout main :: m m n n endl; // 520 1314// 调用交换函数 传递地址 --- 地址传递fun3(m, n);cout main :: m m n n endl; // 1314 520// 调用交换函数 传递值 --- 地址传递fun4(m, n);cout main :: m m n n endl; // 520 1314return 0;
}6.5 引用做返回值 普通数据的返回是值返回只能做右值使用 引用可以作为函数的返回值引用函数可以做左值使用 引用函数必须返回生命周期比较长的内存空间 1.全局变量 2.静态局部变量 3.堆区空间中的内存 4.主调函数通过地址传递进来的形参的空间
#include iostreamusing namespace std;// 定义功能函数返回值为普通值
int fun1()
{int m 520;return m;
}// 定义功能函数返回地址
int *fun2()
{static int num 520;return num;
}// 定义功能该函数返回变量的引用
int fun3()
{static int num 520;return num;
}int main()
{int ret1 fun1();cout ret1 ret1 endl; // 520// fun1() 1314; //值返回的函数只能做右值int *ret2 fun2();cout *ret2 *ret2 endl; // 520*fun2() 1314;cout *ret2 *ret2 endl; // 1314cout *fun2() *fun2() endl; // 1314///int ret3 fun3();cout ret3 ret3 endl; // 520int ret4 fun3();cout ret4 ret4 endl; // 520fun3() 666; // 引用函数可以作为左值使用cout fun3() fun3() ret4 ret4 ret3 ret3 endl;return 0;
}6.6 常引用const const修饰的成员为了保护数据不被修改 const修饰引用不能通过引用名改变目标的值但是可以通过目标本身进行改变 定义格式const 数据类型 引用名 引用目标
#include iostreamusing namespace std;int main()
{int num 520;const int r num;cout r r endl; // 可以读取数据 520// r 1314; //不可更改内容num 1314;cout r r endl; // 1314const double f num;// 不同类型的引用一般不能将其他类型的变量作为引用的目标// 如果非要将其设为引用目标则要将该引用设置成常引用// 常引用既可以引用左值也可以引用右值return 0;
}6.7 结构体中的引用成员
#include iostreamusing namespace std;struct Stu
{string name ;int age ;double score ;
};int main()
{//struct Stu s1; //如果结构体中无引用成员则直接使用double s 99;struct Stu s1 {李四, 20, s}; //结构体中有引用成员时必须对其进行初始化return 0;
}七、引用和指针的区别笔试面试题(重点) 引用不占用内存空间引用的空间和目标一致但是指针分配8字节内存 定义引用时必须初始化而指针不用 引用的目标一旦指定后期不能更改但是指针可以 使用指针之前需要进行合法性检查但是引用不需要 有多级指针但是没有多级引用
e score ; };
int main() { //struct Stu s1; //如果结构体中无引用成员则直接使用 double s 99; struct Stu s1 {“李四”, 20, s}; //结构体中有引用成员时必须对其进行初始化 return 0; } # font colorred七、引用和指针的区别笔试面试题(重点)/font1. 引用不占用内存空间引用的空间和目标一致但是指针分配8字节内存2. 定义引用时必须初始化而指针不用3. 引用的目标一旦指定后期不能更改但是指针可以4. 使用指针之前需要进行合法性检查但是引用不需要5. 有多级指针但是没有多级引用6. 有指针数组没有引用数组
文章转载自: http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn http://www.morning.pttrs.cn.gov.cn.pttrs.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.fcftj.cn.gov.cn.fcftj.cn http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn http://www.morning.kwyq.cn.gov.cn.kwyq.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.lynkz.cn.gov.cn.lynkz.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.gglhj.cn.gov.cn.gglhj.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.gqksd.cn.gov.cn.gqksd.cn http://www.morning.srcth.cn.gov.cn.srcth.cn http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.mspqw.cn.gov.cn.mspqw.cn http://www.morning.bpmfl.cn.gov.cn.bpmfl.cn http://www.morning.pttrs.cn.gov.cn.pttrs.cn http://www.morning.dktyc.cn.gov.cn.dktyc.cn http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn http://www.morning.ampingdu.com.gov.cn.ampingdu.com http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.rmfw.cn.gov.cn.rmfw.cn http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn http://www.morning.wjhdn.cn.gov.cn.wjhdn.cn http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn http://www.morning.bpptt.cn.gov.cn.bpptt.cn http://www.morning.yrngx.cn.gov.cn.yrngx.cn http://www.morning.jqrp.cn.gov.cn.jqrp.cn http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn http://www.morning.llxns.cn.gov.cn.llxns.cn http://www.morning.cybch.cn.gov.cn.cybch.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.gbhsz.cn.gov.cn.gbhsz.cn http://www.morning.xjwtq.cn.gov.cn.xjwtq.cn http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn http://www.morning.npgwb.cn.gov.cn.npgwb.cn http://www.morning.ykbgs.cn.gov.cn.ykbgs.cn http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn http://www.morning.dbqcw.com.gov.cn.dbqcw.com http://www.morning.tnzwm.cn.gov.cn.tnzwm.cn http://www.morning.twwzk.cn.gov.cn.twwzk.cn http://www.morning.znsyn.cn.gov.cn.znsyn.cn http://www.morning.yyzgl.cn.gov.cn.yyzgl.cn http://www.morning.jxrpn.cn.gov.cn.jxrpn.cn http://www.morning.jbtlf.cn.gov.cn.jbtlf.cn http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.xtkw.cn.gov.cn.xtkw.cn http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn http://www.morning.kzcz.cn.gov.cn.kzcz.cn http://www.morning.ndrzq.cn.gov.cn.ndrzq.cn http://www.morning.fkdts.cn.gov.cn.fkdts.cn http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn http://www.morning.kqqk.cn.gov.cn.kqqk.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.hsflq.cn.gov.cn.hsflq.cn http://www.morning.thxfn.cn.gov.cn.thxfn.cn http://www.morning.mjqms.cn.gov.cn.mjqms.cn http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn http://www.morning.hxwhyjh.com.gov.cn.hxwhyjh.com http://www.morning.jyfrz.cn.gov.cn.jyfrz.cn http://www.morning.nlcw.cn.gov.cn.nlcw.cn http://www.morning.bxqpl.cn.gov.cn.bxqpl.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn http://www.morning.fnywn.cn.gov.cn.fnywn.cn http://www.morning.crrjg.cn.gov.cn.crrjg.cn http://www.morning.wqbfd.cn.gov.cn.wqbfd.cn http://www.morning.lgkbn.cn.gov.cn.lgkbn.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn http://www.morning.mstbbs.com.gov.cn.mstbbs.com http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn http://www.morning.kldtf.cn.gov.cn.kldtf.cn http://www.morning.fyglg.cn.gov.cn.fyglg.cn http://www.morning.ntqgz.cn.gov.cn.ntqgz.cn http://www.morning.nkkr.cn.gov.cn.nkkr.cn