您的位置:首页 > 编程语言 > C语言/C++

C++指针学习笔记

2016-10-20 19:26 134 查看
本篇的内容十分的杂,而且表述不清,纯属菜鸟叽叽,路过请转。

底层

指针的周边关系

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

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

第三、 内存单元访问管理类似于学生公寓的情况。学生就相当于变量的内容,房间是存储单元,房号就是存储地址。房号变成地址了那么变量名是什么?答案是,学生的名字。

如果知道了学生的名字,就可以有名字找到学生。如果知道了房号,同样可以找到这个学生。前者相当于使用普通变量访问数据,后者相当于使用地址访问数据。



&运算符

与指针密切关联

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

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如何确定分配多少内存呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: