指针操作(学习笔记)
指针的值(该指针指向的地址),储存在指针指向地址上的值,指针自己的地址。
9种不同的操作
1.赋值
数组名,带地址运算符(&),另一个指针。
2.解引用
“ * ”:*ptr = 100; //给出指针指向地址上储存的值
3.取址
指针变量也有自己的变量名。
4.指针与整数相加
ptr1 + 4 = &urn[4]; //整数和指针所指向类型的大小(字节)相乘
5.递增指针
指针移动至数组的下一个元素。ptr++ 相当于把 ptr 的值加上4(int为4字节)——*ptr 从urn[0] 变为urn[1]
6.指针减去一个整数
ptr3 - 2 == &urn[2]; //原始ptr3指向&arn[4]
7.递减指针
类似于指针地址。指针移动至数组的下一个元素
8.指针求差
求差求出数组中两个元素之间的距离。
9.比较
指针的两个用法:
1.在函数间传递信息(如果希望在被调函数中改变主调函数的变量,必须使用指针)。
2.指针被用在处理数组的函数中。
指针数组、函数指针、指向指针的指针数组、指向函数的指针数组。
保护数组中的数据:
编写一个处理基本类型(如,int)的函数时,此时选择传递:1.int类型的值;2、指向int的指针。
通常都是直接传递数值,只要程序需要在函数中改变该数值时,才会传递指针。
对于数组,必须传递指针。
如果函数的意图不是修改数组中的数据内容,那么在函数原型和函数定义中声明形式参数时应使用关键字const。例如:int sum(const, int ar[], int n);
一般情况:
1.如果编写的函数需要修改数组,声明形参时不适用const;
2.如果编写的函数不用修改数组,那么声明数组形参时最好使用const。