• 【C语言】指针&数组


    数组

    • 传递数组给函数
        double getAverage(int arr[], int size)
        {
            int    i;
            double avg;
            double sum=0;
            for (i = 0; i < size; ++i){
                sum += arr[i];
            }
            avg = sum / size;
            return avg;
        }
        int main ()
        {
            int balance[5] = {1000, 2, 3, 17, 50};
            double avg;
            avg = getAverage( balance, 5 ) ;
            printf( "平均值是: %f ", avg );
            return 0;
        }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    • 函数返回数组: 返回一个指向数组的指针
      int * getRandom()
      {
          static int r[10];
          int i;
          srand((unsigned)time(NULL));
          for(i=0;i<10;++i){
              r[i] = rand();
          }
          return r;
      }
      int main()
      {
          int *p;
          int i;
          p=getRandom();
          for(i=0;i<10;i++){
              printf("*(p+%d):%d\n",i,*(p+i));
          }
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
    • 传递指针给函数
      void getSeconds(undigned long *par)
      {
          *par = time(NULL);
          return;
      }
      getSeconds(&sec);
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 函数返回指针
      int * getRandom()
      {
        srand((unsigned)time(NULL));
        r[3] = rand();
        return r;
      }
      p = getRandom();
      printf("%d",*p);
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    指针

    运算符

    • &: 返回变量地址
    • *: 指向一个变量
      优先级
    • NULL: 声明变量时若无确切地址, 可赋一个NULL值
      int *ptr = NULL;
      
      • 1
      • 地址0x0, 多数系统不允许访问地址0的内存, 表明不指向一个可访问的内存位置.

    运算

    • 增减
      • 递增ptr++: 指向下一个元素的存储单元
      • 递减ptr--: 指向前一个元素的存储单元
      • 跳跃的字节数取决于指针指向的变量数据类型长度(int4字节)
    • 比较
      • ==, <, >
      • ptr <= &var[MAX-1]

    指针数组

    int *ptr[MAX];
    ptr[i]=&var;
    x=*ptr[i];
    
    const char *names[]={   //  指向字符的指针数组来存储一个字符串列表
        "KCZX",
        "XHYZ",
        "TJDX",
        "GKGZ",
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    指针指针

    int **ptr2;
    
    ptr1 = &V;
    ptr2 = &ptr1;
    
    printf("%d",V);
    printf("%d",*ptr1);
    printf("%d",**ptr2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    基于SpringBoot的古典舞在线交流平台的设计与实现
    不可不知的 MySQL 升级利器及 5.7 升级到 8.0 的注意事项
    ElasticSearch架构
    Python技术栈性能测试工具Locust入门
    TCP/IP协议—DNS
    设计模式5、原型模式 Prototype
    JAVA 中的 / 和 % 区别
    【OpenCV】双目相机测距及其深度恢复原理及其算法流程
    T1081 分苹果(信息学一本通C++)
    怎么看待编程界的劣驱良现象?
  • 原文地址:https://blog.csdn.net/weixin_46143152/article/details/126671580