今天是研0进组的第五天这几天在了解雷达基础知识和相关算法目前学到了C/C的灵魂--指针。特此记录一些学习心得和体会。1.指针与数组int arr[5]{1,2,3,4,5}; int* a arr; //等价于int* a arr[0]; std::cout *(a1); //二者相同 std::cout *(arr1);// 二者相同arr本身不是指针变量它没有自己的存储空间但编译器在表达式中会把arr转换成int*类型。但arr和p有一个关键区别sizeof(arr)是整个数组的大小5 * 4 20字节而sizeof(p)是指针的大小8 字节64 位系统。数组名是常量指针它指向数组首元素但你不能修改它。int arr[5] {0,1,2,3,4}; int* p arr; p; //原本p指向arr[0],后指向arr[1] std::cout *p;// 此时输出1 arr; //错误用法切记arr是常量指针 std::cout *arr;// 报错2.指针与constint a{2},b{4}; const int* p1 a; //指针常量 int* const p2 b; //常量指针 p1 b; //可以改变指针的指向此时p1指向a *p2 5; //报错! 不能改变指针指向的值 *p2 5; //可以改变指针指向的值此时b5 p2 a; //报错! 不能改变指针的指向对于常量指针和指针常量可以理解为指针常量const int*p1a;这里*p1离const更接近所以const限定的对象是 *p1而a不受const的约束所以指针常量可以改变指针指向而不能改变指针指向的值而对于常量指针 int* const p2 a;这里const限定的是p2a但是不限定a的数值的大小。
雷达所研0:C++的学习笔记
今天是研0进组的第五天这几天在了解雷达基础知识和相关算法目前学到了C/C的灵魂--指针。特此记录一些学习心得和体会。1.指针与数组int arr[5]{1,2,3,4,5}; int* a arr; //等价于int* a arr[0]; std::cout *(a1); //二者相同 std::cout *(arr1);// 二者相同arr本身不是指针变量它没有自己的存储空间但编译器在表达式中会把arr转换成int*类型。但arr和p有一个关键区别sizeof(arr)是整个数组的大小5 * 4 20字节而sizeof(p)是指针的大小8 字节64 位系统。数组名是常量指针它指向数组首元素但你不能修改它。int arr[5] {0,1,2,3,4}; int* p arr; p; //原本p指向arr[0],后指向arr[1] std::cout *p;// 此时输出1 arr; //错误用法切记arr是常量指针 std::cout *arr;// 报错2.指针与constint a{2},b{4}; const int* p1 a; //指针常量 int* const p2 b; //常量指针 p1 b; //可以改变指针的指向此时p1指向a *p2 5; //报错! 不能改变指针指向的值 *p2 5; //可以改变指针指向的值此时b5 p2 a; //报错! 不能改变指针的指向对于常量指针和指针常量可以理解为指针常量const int*p1a;这里*p1离const更接近所以const限定的对象是 *p1而a不受const的约束所以指针常量可以改变指针指向而不能改变指针指向的值而对于常量指针 int* const p2 a;这里const限定的是p2a但是不限定a的数值的大小。