c++重要的概念
Posted 程序员ken
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++重要的概念相关的知识,希望对你有一定的参考价值。
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;
}
以上是关于c++重要的概念的主要内容,如果未能解决你的问题,请参考以下文章