C++初级知识学习笔记3

008、

1、对于2维数组array而言*(*(array + i) + j)指的是:*(array+i)获取第i行的首地址,然后在加j的出第i行第j列的地址,然后*(*(array + i) + j)得出第i行第j列的值;
2、指向常量的指针(const int *p=&x;),不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象p=s,即不可以使用*指针的形式赋值;
2.1、指向常量的指针(const int *p=&x;):意思是指针p是个变量,而x是个const int常量,所以我们可以通过改变指针的指向,如p = y,来改变指针p的值,即该变量指针所指向的地址发生改变,而不能通过*p=8来为x重新赋值,此处需理解的是*p所代表的是x的值,而p代表的是x的地址。
3、指针常量(int *const p=&x;),指针本身是一个常量,意思是指针所指向的那个变量的地址不容改变即,p指向变量x,然而x是变量,可以通过*p来改变变量x的值,但是x所处的地址未发生改变。

4、2.1和3比较较为纠结,许仔细比较!!!!

5、对于指针的定义,指针前方的数据类型是指指针所指向的数据的数据类型,而不是指针本身的数据类型,如:定义如下:
const int *p = &x;是指x的数据类型是const int类型
int *const p = &x;是指x的数据类型是int类型,指针类型为const类型;
6、指向类类型对象的指针,可以有2种访问对象成员(方法和属性等)的方法,如下:Point *p=&A,其中A为对象,则如A.get()可以通用使用 (*p).get() 和 p->A 访问。


009、

1、动态申请内存的操作是:new 类型名T(初值列表),如
int *p = new int(2);,然后用*p访问;
2、释放内存操作delete 指针p;释放指针p所指向的内存。
3、动态创建多维数组,声明为如:int (*p)[9];其中9代表的是行数,然后再可声明p = new int[4][9];表示的是4列9行的2维数组。
4、将指针作为函数参数传递时,可以达到引用传递的结果;因为传递的是指向地址而不是值。
5、实参是数组名的时候形参可以是指针。
6、第45上讲:指向指针的指针较为困惑!!!
7、指向指针的指针根据最后所指的数据类型来选择指针类型,如Point *p[2],可以作为参数传递时传递p即该数组的首地址,但是形参的接受为Point **a;则知道第一次的指针类型为int,然后指针类型为Point.
8、指针型函数:返回值是个地址时;
如:存储类型 数据类型 *函数名。
9、 指向函数的指针:数据指针指向数据存储区,而函数指针指向的是程序代码存储区;
如:存储类型 数据类型 (*函数指针名)();
10、整行输入字符串的方法cin.getline(字符数组名,字符个数,结束符),可以包括空格;
11、cin.get(字符数组名,字符个数,结束符);//一般用于读取一个字符,可以包括空格。
12、关于字符串处理的一些函数(非string的函数,单独使用的处理字符函数):
——strcat(连接),strcpy(复制)、strcmp(比较)、strlen(求长度),strlwr(转换小写),strupr(转换大写)
13、strlen("china")和sizeof("china")结果分别是5和6,原因是sizeof最后还包括了一个0(字符数组结束以\0)
14、使用string类时,需引用
#include <string>
using namespace std;
15、比较指针数组和指向数组的指针:
int *p[5]:指针数组,p表示有5个整形指针的数组,使用时需要用p[x]表示地址,而*p[x]表示真值;
int (*p)[5]:指向数组的指针,p表示有5个整形数的数组指针,可以相当于int array[5] = *p;则,使用时(*p)[x]是数据真值,而*p表示数组的起始地址,p[x]没有意义;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值