首页 > 编程语言 >C++ 第三节课 指针的使用

C++ 第三节课 指针的使用

时间:2024-02-22 21:44:22浏览次数:26  
标签:std cout show C++ 三节课 指针

#include <iostream>

using namespace std;
void show(){
    cout << "全局函数" << endl;
}

struct Stu {
    int a;
    void write_code(){
        cout << "成员函数" << endl;
    }
};

int main()
{
    cout << "Hellotec测试 World!" << endl;
    // 指针的使用
    // 普通指针 * p
    // 数组指针 (*parr)[3]  这是一个长度为 3 的数组指针  长得这样 [地址1,地址2,地址3]
    // 函数指针  (*pfunc)()
    void (*pfunc)() = show;  // show  or &show 都是可以的
    pfunc();
    // 成员函数指针
    // 使用指针指向一个成员函数  成员函数必须使用 &取地址符号
    // 成员函数指针的调用也是与成员函数调用是一样的
    void (Stu::*ppfunc)() = &Stu::write_code; // 此时 成员函数指针是在 结构体 Stu 里面的
    Stu stu;
    // stu.write_code();  // 成员函数调用
    (stu.*ppfunc)();  // 成员函数指针的调用

    // const 修改符 常量不可以修改 初始化的时候赋值
    const int a = 100;
    // a = 1023; C中 const 定义的变量是可以通过 指针修改的
    // const在C++中的用法
    const int *p = &a;  // 现在 const 修修饰的是指针的类型
    // *p = 10000;  // *p 是一个 read-only 只读属性 没有写的属性 所以不能直接赋值
    int c = 30;
    p = &c; // p 是地址 *p 是取地址 p 可以赋值(重新指定地址)
    cout << *p << endl;
    int * const p2 = &a;  // 此时 const 修饰的是  p (指针变量) 所以 p(地址不可以改变) *p2 是可以改变的
    return 0;
}

 

标签:std,cout,show,C++,三节课,指针
From: https://www.cnblogs.com/zhulongxu/p/18028290

相关文章

  • 11. 盛最多水的容器C++
    原本想o(n2)遍历的,结果超时了,果然没这么简单就解决。classSolution{public:ints(vector<int>height,inti,intj){ints1=min(height[i],height[j])*(j-i);returns1;}intmaxArea(vector<int>&height){intmax=0,i=0,j=heigh......
  • 深入理解C++中的堆与栈:内存管理的关键区别与实例解析
     概述:C++中,堆和栈是两种不同的内存分配方式。栈自动分配、释放内存,适用于短生命周期变量;堆需要手动管理,适用于动态分配内存,但需要显式释放以防内存泄漏。通过清晰的示例源代码,演示了它们在变量生命周期、访问方式等方面的区别。C++中的堆(heap)和栈(stack)是两种内存分配和管理方......
  • C++ 继承和派生
      ......
  • C++ 多态 超详细讲解
    C++多态超详细讲解多态概念引入多态字面意思就是多种形态。我们先来想一想在日常生活中的多态例子:买票时,成人买票全价,如果是学生那么半价,如果是军人,就可以优先买票。不同的人买票会有不同的实现方法,这就是多态。1、C++中多态的实现1.1多态的构成条件C++的多态必须满足两......
  • C++ constexpr
    C++constexpr比如我有一个函数,返回10intget10(){return10;}我想拿去初始化数组大小intarraynum[get10()];编译器会报错,因为会说只能用常量去初始化,所以我们可以用constexpr,把函数改成常量表达式,这样编译器在编译阶段就知道了常量。再比如一个可变参函数模板,我想......
  • C++ STL 容器-string类型
    C++STL第一部分-容器STL的介绍C++的STL分为六大部分容器分为String容器例子1std::stringstr1,str2,str3,str4;str1.assign("abcd");//给str1赋值abcdstr2.assign("abcd",3);//获取abcd中的3个,从0到2str3.assign(str1);//获取str1//注意str3()和str3.a......
  • C++ 第二节课 结构体, 字符串 和 C语言的区分
    1#include<iostream>23usingnamespacestd;456//结构体7structStu{8stringname;9intage;1011//结构体重的函数叫做成员函数在C中是不能直接写函数的只能使用函数指针,通过指针的回调出发函数(行为)12//默认的修饰符......
  • 4.3 提升题 - A One Way In, Two Ways OutC++
    就是让你判断输入受限的双端队列的输出的正确性。其实就是模拟双端队列出队的过程,要不左边出队,要不右边出队,而入队已经一定了。用一个数组模拟输入受限的双端队列就行了。但是写这题可太难受了,写了我大概2个半小时,各种各种小错误,没考虑周全的地方。#include<iostream>using......
  • C++内存管理
    C++内存管理目录C++内存管理内存模型堆与栈的区别其他说明new和deletemalloc/free和new/delete区别new运算符的原理new/delete的使用要点判断内存申请成功delete与delete[]区别参考资料内存模型内存类型作用生命周期常量存储区存放常量,不允许修改全局/静态存储......
  • C++智能指针
    C++智能指针目录C++智能指针unique_ptr简单示例构造方法释放和重置shared_ptr构造方法常用函数构造重置和析构获得原始指针注意事项weak_ptr构造方法常用函数解决循环引用参考资料在C++中,内存的分配和释放都是由开发者手动实现的。这种方式虽然很灵活,但也十分容易出错,比如忘记释......