美文网首页
<C++程序设计>内存,结构体,内联函数,Strin

<C++程序设计>内存,结构体,内联函数,Strin

作者: zhouluyao | 来源:发表于2017-12-23 21:32 被阅读13次

八进制 前缀0 ,020在计算机中是表示16的整数

浮点型1.0占8个字节

字符串占的字节数 = 字符串长度+1

“程序设计”长度为8(4个汉字占8个字节),占9个字节

^ 按位异或,不同为1相同为0

同名变量,局部变量的优先级要高于全局变量,如果想使用全局变量而不是局部变量,应在变量名之前加上作用域符号"::"

面向对象:采用对象来描述内部属性和操作方法,将数据和函数当做一个整体

继承:在...的基础上,又有什么样的新特征

destructor往往用于释放constructor中动态申请的内存空间
异或^,两个操作数不同为1,相同为0,将int型变量n的低8位取反,其余位保持不变 n^=0xFF

对于有符号数,如long,char,int,short,char型变量 右移时符号位(最高位)将一起移动,正数的符号位为0,负数的符号位为1,如果原符号位为0,右移时高位就补充0,原符号位为1右移时高位就补充1

实际上,右移n位,就相当于左操作数除以2的n次方,并且结果往小的取整(这是规律,不是规定)

转义字符

\n 换行符 \r 表示回车 \b 退格 \t制表符 ' 单引号 ''双引号 \0结束符 \f 分页符

C++程序运行时使用的内存区域

堆区 存放动态分配的数据

栈区 存放局部数据,局部变量

全局数据区 存放全局数据和静态数据,全局变量

程序代码区 存放程序各个函数的代码

存储类型 auto,register,static,extern 一个变量完整的形式<存储类型> <数据类型> <变量名>

auto:在定义块的开始分配空间,执行结束时释放空间

register:尽可能存放在CPU的寄存器中,提高程序的效率,仅局部变量和形式参数,才可作为寄存器变量

extern:如果在一个源文件a.cpp中定义的全局变量,想在b.cpp中使用,则应该在b.cpp中加上extern进行声明,表示该全局变量不在b.cpp中定义的

a.cpp

int Dimension = 100;

b.cpp

extern int Dimension;

如果在全局变量前加上static,则成为静态成员变量,只能在本文件中使用

函数的自动变量(auto)是在函数执行中才分配,static变量是在编译时才分配的内存

结构体

结构体类型 *指针变量名;

(*指针变量).变量名

指针变量->变量名

结构体只有数据成员,没有函数成员

内联函数

内联函数:在类体内直接定义函数成员,该成员函数成为内联函数

内联成员函数 : inline + 成员函数,整个函数体出现在类定义的内部

//内联函数形如:
class clock{

void show_time(){cout<<Hour:<<":"minute<<endl;}

}

inline int square(int x){

return x*x;

}
//编译时遇到内联函数调用square(i),就用函数体中的代码代替square(i)

class clock{

void show_time(){cout<<Hour:<<":"minute<<endl;}

}

String的相关操作

char *strcat(char *destin,char * source) //链接两个字符

char *strcpy(char * destin,char *source) //将字符串source拷贝到destin中

String text =“heavy rains are pushing water”;

k = text.find("heavy"); //查找heavy的下标

text.earse(k,sizeof("heavy")-1); //删除heavy

text.insert(k,"strong");

String S1("Hello");//一个参数的构造函数

String month ="march"; //字串赋值

String S2(8,"X");//两个参数的构造函数

String类不提供以字符和整数为参数的构造函数

String error ='C';//错误,不存在以字符为参数的构造函数

可以将字符赋值给String

String s;

s ='n';

逐个访问String类对象的字符,String S1("Hello");

for(int i=0;i<s1.length;i++)

cout<<s1.at(i)<<endl;

成员函数at会做范围检查,如果超出范围会抛出out_of_range异常,而下标运算符不会做检查

//用+运算符连接字符串

String S1("GOOD"),S2("MORNING");

S1+=S2;

相关文章

网友评论

      本文标题:<C++程序设计>内存,结构体,内联函数,Strin

      本文链接:https://www.haomeiwen.com/subject/zbzqgxtx.html