C++ 复习03 函数 指针
  dBFTbkVLMBge 2023年11月02日 73 0

061 函数定义 声明 和调用

C++ 复习03 函数 指针_函数定义

C++ 复习03 函数 指针_函数定义_02

C++ 复习03 函数 指针_函数定义_03

C++ 复习03 函数 指针_函数定义_04

C++ 复习03 函数 指针_函数定义_05

C++ 复习03 函数 指针_指针_06

C++ 复习03 函数 指针_指针_07

函数调用需要大量出入栈的开销

062 函数的参数

C++ 复习03 函数 指针_指针_08

C++ 复习03 函数 指针_指针_09

063 预处理 内存分区

C++ 复习03 函数 指针_函数定义_10

C++ 复习03 函数 指针_指针_11

C++ 复习03 函数 指针_函数定义_12

C++ 复习03 函数 指针_指针_13

C++ 复习03 函数 指针_指针_14

使用:: 获取外部全局变量的值data=10

C++ 复习03 函数 指针_函数定义_15

C++ 复习03 函数 指针_指针_16

// 测试静态局部变量
void fun04() {
    static int num = 10;
    num++;
    cout<<"num="<<num<<endl;

}

int main(int argc,char *argv[])
{
   fun04();
   fun04();
   fun04();
   fun04();
   fun04();
   return 0;
}

C++ 复习03 函数 指针_函数定义_17

C++ 复习03 函数 指针_指针_18

C++ 复习03 函数 指针_指针_19

在当前源文件用,可以有效避免命名冲突

C++ 复习03 函数 指针_指针_20

C++ 复习03 函数 指针_指针_21

C++ 复习03 函数 指针_指针_22

C++ 复习03 函数 指针_函数定义_23

C++ 复习03 函数 指针_函数定义_24

宏只是预处理阶段的一个替换,所以没有类型,不需要开辟空间

C++ 复习03 函数 指针_指针_25

C++ 复习03 函数 指针_指针_26

C++ 复习03 函数 指针_函数定义_27

065 指针

C++ 复习03 函数 指针_指针_28

C++ 复习03 函数 指针_函数定义_29

C++ 复习03 函数 指针_指针_30

int (*p) 缩略写为int *p

#include <iostream>

using namespace std;

void test01() {
    cout<<sizeof(char *)<<endl;
    cout<<sizeof(short *)<<endl;
    cout<<sizeof(int *)<<endl;
    cout<<sizeof(long *)<<endl;
    cout<<sizeof(float *)<<endl;
    cout<<sizeof(double *)<<endl;
    cout<<sizeof(int ***)<<endl;
}

int main(int argc,char *argv[])
{
   test01();
   return 0;
}

C++ 复习03 函数 指针_指针_31

C++ 复习03 函数 指针_函数定义_32

C++ 复习03 函数 指针_指针_33

066 指针变量的类型

C++ 复习03 函数 指针_函数定义_34

C++ 复习03 函数 指针_指针_35

使用Qt指针不初始化,则会输出一个随机值;其他编译器直接报错

下面的例子就说明了不要操作指向NULL的指针变量!!!

C++ 复习03 函数 指针_函数定义_36

C++ 复习03 函数 指针_函数定义_37

C++ 复习03 函数 指针_函数定义_38

C++ 复习03 函数 指针_指针_39

067 指针变量指向类型

C++ 复习03 函数 指针_指针_40

C++ 复习03 函数 指针_指针_41

C++ 复习03 函数 指针_函数定义_42

C++ 复习03 函数 指针_函数定义_43

C++ 复习03 函数 指针_指针_44

不要直接对void *p的指针取*

C++ 复习03 函数 指针_指针_45

C++ 复习03 函数 指针_函数定义_46

C++ 复习03 函数 指针_指针_47

068 数组元素的指针

C++ 复习03 函数 指针_指针_48

C++ 复习03 函数 指针_函数定义_49

C++ 复习03 函数 指针_指针_50

C++ 复习03 函数 指针_函数定义_51

C++ 复习03 函数 指针_函数定义_52

069 字符串与指针

C++ 复习03 函数 指针_函数定义_53

C++ 复习03 函数 指针_指针_54

C++ 复习03 函数 指针_指针_55

64位机器是8字节 32位机器是4字节

C++ 复习03 函数 指针_函数定义_56

070 指针数组

C++ 复习03 函数 指针_指针_57

C++ 复习03 函数 指针_指针_58

void test03() {
    int num1 = 10;
    int num2 = 20;
    int num3 = 30;
    int num4 = 40;

    int *arr[4] = {&num1,&num2,&num3,&num4};
    // 开始遍历指针数组
    for(int i = 0 ; i < 4 ; i++) {
        cout<<*arr[i]<<" ";
    }
    cout<<endl;
}

int main(int argc,char *argv[])
{
   test03();
   return 0;
}

运行结果为

C++ 复习03 函数 指针_函数定义_59

C++ 复习03 函数 指针_指针_60

C++ 复习03 函数 指针_指针_61

071 数组指针

C++ 复习03 函数 指针_函数定义_62

C++ 复习03 函数 指针_函数定义_63

C++ 复习03 函数 指针_指针_64

C++ 复习03 函数 指针_指针_65

以下的语句是建立了联系

C++ 复习03 函数 指针_指针_66

C++ 复习03 函数 指针_指针_67

C++ 复习03 函数 指针_指针_68

073 数组作为函数的参数

C++ 复习03 函数 指针_指针_69

C++ 复习03 函数 指针_函数定义_70

void setNumber(int* data) {
    *data = 100;
}

void test04() {
    int num = 0;
    setNumber(&num);
    cout<<"num = " <<num <<endl;
}

int main(int argc,char *argv[])
{
   test04();
   return 0;
}

C++ 复习03 函数 指针_指针_71

C++ 复习03 函数 指针_函数定义_72

//void outputArray(int arr[5],int n) {
  void outputArray(int *arr,int n) // 第1行 第2行等价
    for(int i = 0 ; i < n ; i++) {
        cout<<arr[i]<< " " ;
    }
    cout<<endl;
}

void test05() {
    int arr[5] = {10,20,30,40,50};
    outputArray(arr,5);
}


int main(int argc,char *argv[])
{
   test05();
   return 0;
}

C++ 复习03 函数 指针_指针_73

074 函数指针作为函数的参数

C++ 复习03 函数 指针_函数定义_74

data函数调用后 就被释放了,所以p就拿不到这个地址,也不可能输出

需要改成静态static的

C++ 复习03 函数 指针_指针_75

C++ 复习03 函数 指针_函数定义_76

int myAdd(int x,int y) {
    return x + y;
}
void test06() {
    int (*p)(int,int) = NULL;
    //函数指针 和 函数入口地址建立关系
    p = myAdd;
    // 通过p调用myAdd函数
    cout<<p(10,20)<<endl;// 30
}


int main(int argc,char *argv[])
{
   test06();
   return 0;
}

C++ 复习03 函数 指针_函数定义_77

C++ 复习03 函数 指针_指针_78

C++ 复习03 函数 指针_指针_79


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
dBFTbkVLMBge