1. const 润饰指针

#include <iostream>using namespace std;int main() {    // 1、const 润饰指针 指针常量    int a = 10;    int b = 20;     int* const p = &a;//指针常量 ==>须要带上&  视为援用值     //特点:指针的指向能够改,指针指向的值不能够改     *p = 200;//正确     //p = 450;// 谬误      cout << *p << endl;         // 2、const 润饰指针 常量指针     const int* k = &a;    //特点:指针的指向不能够改,指针指向的值能够改     //*k = 900;//谬误     k = &b;         cout << *k << endl;    return 0;}

2.指针和数组

#include <iostream>using namespace std;///// <summary>///// 获取数组的长度///// </summary>///// <typeparam name="T"></typeparam>///// <param name="arr"></param>///// <returns></returns>template<class T> int length(T& arr) {    int len = sizeof(arr) / sizeof(arr[0]);    return len;}int main() {    int arr[] = { 37,21,3,49 };    cout << "拜访数组中的第一个元素:" << arr[0] << endl;    int* p = arr;    cout << "利用拜访数组中的第一个元素:" << *p << endl;    ++p;    cout << "利用拜访数组中的第二个元素:" << *p << endl;    //利用指针循环取值 [原理是指针偏移 第一个地址向后偏移一位 就是向后取值]    int* pz = arr;    for (int i = 0; i < length(arr); i++)    {        cout << "利用拜访数组中的第"<<i+1<<"个元素:" << *pz << endl;        ++pz;    }    return 0;}

3.值传递和地址传递(相当于java的援用传递)

值传递:特点 不扭转原有值

援用传递:形式 利用&变量名(代表的是援用),理论传递的是地址,调用办法应用指针,这样就能扭转指针的值,从而做到扭转原有变量值的扭转


【这个图没看到也没关系 ,晓得是地址“替换”就行了】

4.空指针和野指针

1.空指针
定义:指针默认为空,个别用于初始化定义,但不能拜访这个空指针,不然会报错

2.野指针

定义:野指针是指向非法的内存空间

#include <iostream>using namespace std;//#include "swap.h";int main() {    // 指针变量p指向内存地址编号0x1203的空间    int* p = (int*)0x1203;    //拜访野指针报错    cout << *p << endl;    return 0;}
本文来源于:程序员ken,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina)、掘金,转载请注明出处。