C++随笔jilu

1.面向行输入可使用getline()和get()函数。getline()以换行符确定字符串的结束位置,并且舍弃换行符,用\0代替换行符。get()函数也是以换行符来确定字符串的结束位置,但不同的是将换行符保存在输入队列中,连续两次使用get时可以cin.get(strname,size);cin.get();cin.get(strname1,size);或者get将两个类成员函数拼接起来cin.get(strname,size).get();cin.get(strname1,size)。对于getline,cin.getline(strname,size).getline(strname1,size)。cin读取空行时需要用到cin.clear()。

2. cin.getline(charr,len),cin为对象,getline为类方法,参数为数组名charr和数组长度len。对于string类对象存储字符串时,使用getline(cin,str),这里cin为参数,getline不是类方法,是个函数。

3.strlen(charr),求数组字符个数,charr为参数;str.size(),str为对象,size为函数。

4.枚举 enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet},枚举量默认为{0,1,2,3,4,5,6,7},后者比前者大1,可以自己定义,枚举量可以相同.。枚举只能用于赋值运算符,不能用于算术运算。枚举量为整形,可以提升为int类型,但不能自动将int类型转换为枚举类型。

5.指针 指针是一个变量,其存储的是一个地址,而非值本身。声明时采用 int* p或者int *p,前者int*表示一个类型,一个指向int的指针,后者强调*p是一个int型的值。*运算符是解除引用,*p表示指针指向地址的值。int *p1,*p2,针对每一个指针,都需要一个*。需要注意的是,在对指针应用解除引用运算符*之前,一定先给指针确定的地址。

6.使用new分配内存  为一个数据对象(可以是结构或者基本类型)获得并指定分配内存的通用格式 typename * p =new tapename;使用new创建时内存需要用delete进行释放,delete p;此时删除的是p指向的内存,而指针p本身。

7. 使用new创建动态数组 此方法称为动态编译,在程序运行时才创建数组,更加灵活,不浪费空间,创建方式为:int * p=new int [];删除时,需要delete [] p; 这相当于释放整个数组。如果通过声明来创建数组,称为静态联编,其是在编译时就将数组大小确定,不管是否需要用到,浪费内存。需要注意的是,1.不要使用delete来释放不是new分配的内存,2.不要使用delete释放同一个内存两次。3.如果要删除数组,记得加[],4.如果删除的是实体分配内存,使用delete(不加[]).5.对空指针运用delete是安全的。

8.整数变量+1后将其值+1,指针变量+1后,增加的量等于它指向的类型的字节数,即指向下一个内存单元。

9.数组表达式*(stacks+1)等价于stacks[1],同理*(stacks+2)等价于stacks[2].

10.数组和指针的两个区别:可以修改指针的值,如pointername=pointername+1;但是数组名是常量,因此不能arrayname=arrayname+1. 。对数组运用sizeof得到的是数组的长度,对指针运用sizeof得到的是指针的长度,即使指针指向的是一个数组。

11.关于数组的地址:对数组取地址时,数组名被解释为其第一个元素的地址,但当数组名应用地址运算符时,得到的将是整个数组的地址。

12.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针。

13.数组指针:首先它是一个指针,它指向一个数组。

14.用new创建动态结构 将new用于成员需要两步:创建结构和访问成员。如创建一个未命名的infltable类型,并将其地址赋给指针 inflatable * ps=new inflatable;访问时不能用.运算符对成员进行访问,因为这种结构只知道地址没有名称,因此可以用->箭头成员运算符,用于指向结构的指针。另外,如果ps是指向该结构的指针,则*ps就是被指向的值-结构本身,因此可以采用(*ps).price进行访问price成员。总的来说,如果结构标识符是结构名,则采用.运算符,如果是指针 ,则采用->运算符。

15.c++管理数据内存的方式有3种,自动存储,静态存储和动态存储。在函数内部定义的常规变量使用自动存储空间,称为自动变量,通常存储于栈中。静态存储有两种办法,一是在函数外部定义,而是使用关键字static。静态变量存在于函数的整个周期,而自动变量存在于函数运行时。动态存储即new和delete提供,其管理内存称为堆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值