首页 > 编程语言 >c++重要的概念部分

c++重要的概念部分

时间:2023-01-11 10:31:43浏览次数:40  
标签:arr const cout 指向 int 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的引用传递)

值传递:特点 不改变原有值

c++重要的概念部分_#include

引用传递:方式 利用&变量名(代表的是引用),实际传递的是地址,调用方法使用指针,这样就能改变指针的值,从而做到改变原有变量值的改变

c++重要的概念部分_数组_02

c++重要的概念部分_野指针_03

c++重要的概念部分_野指针_04

【这个图没看到也没关系 ,知道是地址“交换”就行了】

4.空指针和野指针

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

c++重要的概念部分_#include_05

2.野指针

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

#include <iostream>
using namespace std;
//#include "swap.h";

int main() {
// 指针变量p指向内存地址编号0x1203的空间
int* p = (int*)0x1203;

//访问野指针报错
cout << *p << endl;
return 0;
}

标签:arr,const,cout,指向,int,c++,概念,部分,指针
From: https://blog.51cto.com/u_13214095/6001729

相关文章

  • C++ 编译依赖管理系统分析以及 srcdep 介绍
    C++编译依赖管理系统分析以及srcdep介绍如果用C++写一个中小型软件,有要用到很多第三方库的话,相信不少人会觉得比较麻烦。很多新兴的语言都有了统一的依赖管理系统和......
  • c++ 常量指针和指针常量
    常量指针:const在*之前指针的地址是可以被再次赋值的(可以修改的)指针地址上面的值(变量)是不能被修改的常量指针的常量是不能被改变的指针常量:const在*之后指针的地......
  • SUM和IF使用求部分和
    GROUPBY可以按照某一列的不同值进行分组,然后将不同组的数据可以利用聚合函数进行汇总取值。--我们可以在老师表里面求解不同班级的老师分别有多少名SELECTclass_id,COU......
  • SAP UI5 FlexBox Layout 布局的概念和具体使用案例介绍试读版
    SAPUI5官网提到了所谓FlexBoxLayout布局的概念。文档提到,FlexBox布局可以让SAPUI5界面上的控件充分利用屏幕可用空间,避免空间的浪费或者控件之间出现重叠的现象发......
  • Vbox安装安卓X86过程及部分注意事项
    因为各种突发情况,鸽了半年...言归正传这两天用Vbox装了个安卓X86,码一下过程,算是为自己记录一下,也帮助其他人少踩点坑。1.下载安卓X86安装包官网(可能需要梯子)https://ww......
  • C++ virtual table
    参考VirtualTableComponentsandOrder不同编译器实现不同,这是gcc的标准virtualcall(vcall)offset.虚拟调用偏移。当一个class存在虚基类时,编译器便会在vtable中插......
  • Linux 下使用GCC/G++编译C++程序
    Linux下使用GCC/G++编译C++程序例程:/*hello.cpp*/#include<iostream>usingnamespacestd;intmain(){cout<<"hellocpp"<<endl;return0;}......
  • GPS转化ECEF坐标系(0) python和c++代码
    https://www.cxyzjd.com/article/taiyang1987912/112982150 importmatha=6378137b=6356752.3142f=(a-b)/ae_sq=f*(2-f)pi=3.14159265359'''......
  • C++获取CPU信息
    #include"windows.h" #include"iostream"#include"string"usingnamespacestd;//用来存储信息DWORDdeax;DWORDdebx;DWORDdecx;DWORDdedx;voidExeCPUID(DWORD......
  • C/C++ 异常处理机制(例:文件拷贝)
    异常是一种程序控制机制,与函数机制互补。函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它可以在出现“意外”时中断当前函数,并以某种机制......