
今天学习了指针的初始化和指针配合数组的使用//指针变量初始化int a 10;int *p a;注意:指针变量如果不初始化 则是随机值也叫野指针 一般定义指针如果不初始化则 int *p NULL; //NULL 0号地址 --空地址指针 数组一维二维指针运算:算术运算pN ——表示的含义 pN*sizeof(基类型) ---p指向了第N1个基类型p-Np ——表示加了一个基类型的大小p--p-q //两个指针相减 必须是同类型指针运算结果表示两个地址间差了几个基类型关系运算 !p q指针 操作 整型 一维数组int a[10] {1,2,3,4,5,6,7,8,9,10};a[0] a 数组名int *p a;注意a[0] ——数据类型 --- int型 a[0] ——地址的数据类型 --- int * 型int *p a[0]; int *p a; ——说 p指向了数组a。*p ——就等价于首元素 。p1 ——a[1]元素的地址数组的下标运算 本质上 就是指针运算const ——限定a为只读 ---空间还是栈上但是只能读不能改const char *s ——const 离基类型近就是用来限定的基类型的 ——仅仅是限定了不能通过 *s的方式进行修改char const *s ——const 离基类型近就是用来限定的基类型的char *const s ——const 离s近就是用来限定的s的 表示s在定义后就不能再指向别的地址了const char * const s; //s不能修改 *s也不能修改注意const 离谁近就是用来限定的谁的在字符串相关的函数形参中能写成const char * 尽可能写成const char *好处:1. 可以提前发现 逻辑错误2. 参数的适用性更强可以接受数组名可以接受字符串常量可以接受const char * 变量3.加上const char * 代码更严谨