指针的讨论

关于指针的学习:

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是小端机器(低位在前,高位在后)

 

posted @ 2021-06-27 10:46  我们都不是哈士奇  阅读(68)  评论(0)    收藏  举报