C++指针学习笔记

本篇的内容十分的杂,而且表述不清,纯属菜鸟叽叽,路过请转。

底层

指针的周边关系
第一、具有静态生存期的变量在程序运行前就已经被分配了内存空间。而普通变量是在什么时候分配内存空间的呢?答案是,程序运行的时候咯。

第二、清楚指针的价值。函数调用时,指针能有效的提高大量数据的传输效率。

第三、 内存单元访问管理类似于学生公寓的情况。学生就相当于变量的内容,房间是存储单元,房号就是存储地址。房号变成地址了那么变量名是什么?答案是,学生的名字。
如果知道了学生的名字,就可以有名字找到学生。如果知道了房号,同样可以找到这个学生。前者相当于使用普通变量访问数据,后者相当于使用地址访问数据。

&运算符

与指针密切关联
“&”出现在变量声明语句中位于被声明的变量左边表示的是引用,例如:

int &i;                         //声明了一个int型的引用

“&”在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符)出现时,表示取对象的地址,例如:

int a, b;
int *pa, *pb=&b;
pa=&a;

用指针处理数组元素:
1.不同类型的指针至简或者指针与非0整数至简的关系运算是毫无意义的。但是指针变量可以和整数0进行比较,0专用于表示空指针,也就是一个不指向任何有效地址的指针。

2.数组中下标为i的元素就是星号(数组名+i),例如,星号array就相当于array[0],*(array+3)就是数组元素array[3]。

3.以下写法等价:

void f(int p[]);
void f(int p[3]);
void f(int *p);

4.使用指针变量输出数组元素:

int main(){
    int a[10] = {1,2,3,4,5,6};
    for (int *p = a;p<(a+6);p++){
        cout << *p << endl;
    }   
    return 0;
}

这里写图片描述

指针数组:
什么叫指针数组,1每个数组的元素都是指针2

声明一维指针数组的语法形式为:

数据类型 * 数组名[下标表达式];

关于指针的其他不太重要的知识整理:
1.指针也是一种数据类型。所以,请不要歧视指针。

2.声明对象的类型,一声明了变量所需要的内存空间,二限定了对变量可以进行的运算及运算规则。莫名好奇怪,JavaScript中的弱类型var如何确定分配多少内存呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值