• 关于c语言二级指针和指针指向数组


    写这篇文章是最近碰到了这两道题目:

    1. #include
    2. int k=7;
    3. void f(int **s)
    4. {
    5. int *t=&k ;
    6. *s=t;
    7. printf("%d,%d,%d,",k,*t,**s);
    8. }
    9. main()
    10. {
    11. int i=3,*p=&i,**r = &p ;
    12. f(r);
    13. printf("%d,%d,%d\n", i,*p,**r);
    14. }

    结果:7,7,7,3,7,7

    关键在于*s = t;

    举个例子

    1. #include
    2. int main() {
    3. int num1 = 42;
    4. int num2 = 100;
    5. int *ptr1 = &num1; // 一个指向 num1 的指针
    6. int **ptr2 = &ptr1; // 一个指向 ptr1 的指针
    7. printf("num1 = %d\n", num1); // 输出 42
    8. printf("*ptr1 = %d\n", *ptr1); // 输出 42
    9. // 修改二级指针的值,使其指向 num2
    10. *ptr2 = &num2;
    11. printf("num1 = %d\n", num1); // 输出 100,因为 ptr1 现在指向了 num2
    12. printf("*ptr1 = %d\n", *ptr1); // 输出 100
    13. return 0;
    14. }

     第二个

    1. #include
    2. int *f(int *s) {
    3. s += 1;
    4. s[1] += 6;
    5. *s++ += 7;
    6. return s;
    7. }
    8. int main() {
    9. int a[5] = {1, 2, 3, 4, 5};
    10. int *p;
    11. p = f(&a[1]);
    12. printf("%d, %d, %d, %d", a[1], a[2], *p, p[1]);
    13. return 0;
    14. }

    首先,我们有一个整数数组 a,其初始值{1, 2, 3, 4, 5}

    然后,在 main 函数中,我们将函数 f 应用于 a 数组的第二个元素(索引为1),也就是 &a[1]

    现在,让我们一步步解释每个操作:

    1. s += 1; 将传递给函数 f 的指针 s 移动到了数组的下一个元素,即索引为2的元素。

    2. s[1] += 6; 将索引为3的元素(也就是数组 a 中的第四个元素)增加了6,所以 a[3] 变成了10。

    3. *s++ += 7; 首先,将指针 s 所指向的元素(现在是索引为2的元素,也就是 a[2])增加了7,所以 a[2] 变成了10。然后,指针 s 移动到了下一个元素,即索引为3的元素(也就是 a[3])。

    4. 主要有两个点需要知道,是s[1]等同于s+1;*s++ +=7,里面*s优先级高,*s+=之后,++是s在执行,不是*s,且++优先级在这里面最低。

    3最近发现结构体可以这样赋值

    1. #include
    2. struct Point {
    3. int x;
    4. int y;
    5. };
    6. int main() {
    7. struct Point points[3] = {{1, 2}, {3, 4}, {5, 6}};
    8. // 打印数组中的值
    9. for (int i = 0; i < 3; i++) {
    10. printf("Point %d: x = %d, y = %d\n", i, points[i].x, points[i].y);
    11. }
    12. return 0;
    13. }

  • 相关阅读:
    Python编程相关的书籍
    L61.linux命令每日一练 -- 第九章 Linux进程管理命令 -- renice和nohup
    计算机网络。CIDR子 网掩码相关
    医学视VQA——综述
    如何寻找有价值的行业报告
    “JavelinRecordDistance“ app Tech Support(URL)
    传输层—TCP原理详解
    LeetCode-1005-K次取反后最大化的数组和-贪心算法
    EEG微状态预测并发fMRI动态功能连接状态
    历届图灵奖得主盘点
  • 原文地址:https://blog.csdn.net/m0_53394907/article/details/132838300