指针/结构体

2021-07-26  本文已影响0人  Sheik

环境:ide:Mac+clion

视频链接:
https://www.bilibili.com/video/BV1Hb411Y7E5?p=5

指针常量和常量指针

    int a = 10;
    int b = 20;
    //常量指针
    const int *p1 = &a; //这里针对的是常量。 也就是a 的值不能修改。
   //* p1 = 20; 这个就是错误的。
   //p1 = &b; // 这就是对的。地址可以修改。

    //指针常量
    int * const p2 = &b;
    * p2 = 30;//正确的。 可以对值进行修改。
    //p2 = &a; //这个错误的。因为是指针常量,不能修改。
    const int * const p3 = &a;//即是常量指针也是指针常量。都不能进行二次修改。

使用指针遍历数组

    int arr[] = {1,2,3,4,5,6,7,8};
    int *p = arr;//将首地址赋值给指针
    cout << "首地址是:"<<p<<" 第一个值是:"<<*p<<endl;
    for (int i=0;i<sizeof (arr)/sizeof (*p);i++){
        cout << *p << " ";
        p++;
    }
    cout << endl;

通过指针(地址传递)来进行两个数进行交换

    int a = 10;
    int b = 20;
    //地址传递,在函数里面进行了地址从新赋值。
    swap1(&a,&b);
    cout << a << "," << b << endl;
    
    void swap1(int * x,int * y){
       int temp = *x;
       *x = *y;
       *y = temp;
    }

练习:定义一个数组,采用冒泡排序法来排序,用到了指针。

    int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
    int len = sizeof(arr) / sizeof(arr[0]);
    bubbleSort(arr, len);
    printArray(arr, len);
//冒泡排序
void bubbleSort(int *arr, int len) {
    for (int i = 0; i < len; i++) {
        for (int j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

//打印
void printArray(int *arr, int len) {
    for (int i = 0; i < len; i++) {
        cout << *arr << " ";
        arr++;
    }
    cout << endl;
}

结构体的定义以及使用


  struct Sdudent{
    string name;
    int age;
    int scores;

  }student; // 这里定义的时候就创建了student 变量。
  
    //结构体,自定义数据类型。
    struct Sdudent s1; //定义方式1 struct 关键字可以省略
    s1.name = "张三";
    s1.age = 20;
    s1.scores = 100;
    struct Sdudent s2 = {"李四",30,90};//定义方式2 关键字可以省略
    student.name = "王五"; // 定义结构体的时候,就创建了student的变量。
    student.age = 40;
    student.scores = 70;

    //结构体数组,以及遍历。
    struct Sdudent arr[] = {
            {"张三",10,30},
            {"李四",20,40},
            {"王五",30,50},

    };
    arr[2].name = "zane";
    for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++){
        cout << arr[i].name << "," << arr[i].age << "," << arr[i].scores << endl;
    }


上一篇 下一篇

猜你喜欢

热点阅读