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的引用传递)

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

file

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

file

file

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

4.空指针和野指针

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

file

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)、掘金,转载请注明出处。

posted @   程序员ken  阅读(14)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示