指针的讨论
关于指针的学习:
1.指针定义和指针声明是两回事!!指针必须先声明、再定义、再引用!(或者声明与定义一起),只声明不定义的指针不能使用(编译会出现段错误)
1 int *p;//是声明 2 *p=&a//是定义 3 cout<<*p;//是使用
2.指针的定义,定义也称初始化,是指为指针分配内存空间,定义指针指向的内存地址(这个内存地址是虚拟地址,并不是实际的内存物理地址),有4种方法
01定义的时候直接初始化,类似第一条
02申请一块内存空间,使用new或malloc,两者区别,参考:https://blog.csdn.net/nie19940803/article/details/76358673
1 int *p = new int; 2 int *p = (int*)malloc(size(int));
03作为函数的返回值进行初始化,见函数指针的使用https://www.cnblogs.com/huskyWuWuWu/p/14908068.html
04直接将另一个指针赋给它
1 int *p=&a; 2 int*q; 3 q=p;
3.关于int * const p 和const int *p
前者const是修饰指针p的,表示指针是个常量,指针是常量的意思就是指针是个地址,这个地址只能是指向某个变量了,不能再指向其他变量,int * const p = &p,*q=26(ok),*q++(error)
后者const修饰的是int,表示不能通过const int *p去做*p = 26,但是你可以直接改i的值,p也可以指向别的内存,用法:1.当做函数参数传进函数时,能保证函数内部不对该指针的值进行修改。2.要传给函数的数据类型比地址大,则可用比较少的字节数船值给参数且避免修改(例如数组)
判断的标志是* (星号)


4.大小端:x86的CPU是小端机器(低位在前,高位在后)
浙公网安备 33010602011771号