数组

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. const int MAX = 3; // 定义 常量最大值 是 3 常量 const
    4. /*
    5. 用一个变量来表示班级的最大人数,或者表示缓冲区的大小
    6. 为了满足这一要求,可以使用const关键字对变量加以限定:
    7. const type name = value;
    8. const 也可以和指针使用 可以限制 指针变量本身
    9. 方法
    10. const int *p1;
    11. int const *p2;
    12. p1和p2 数据是只读的 ,值可以修改
    13. int * const p3; 只读 p3 指针的值不能被修改
    14. */
    15. int main(int argc, char *argv[]) {
    16. int Array[] ={10,20,30}; // Array 数组
    17. int i;
    18. for (i=0;i<MAX;i++)
    19. {
    20. printf(" Value of Array[%d]=%d\n",i,Array[i]); //输出数组的值
    21. }
    22. return 0;
    23. }

    数组取值

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. //const int MAX = 3;
    4. void addx(int a,int b,int *c)
    5. {
    6. *c=a+b;
    7. }
    8. int main(int argc, char *argv[]) {
    9. // int c[5] = {1,2,6,7,5};
    10. // int d[][3]={
    11. // {0,2,3},
    12. // {4,6,6},
    13. // {7,8,9},
    14. // };
    15. // int *ptr;
    16. // int f=10;
    17. // ptr = &f;
    18. // *ptr =20; 指针修改变量的值
    19. // printf("%d",*ptr); //取数组的值 可以替换为 ptr[0]
    20. //指针 ptr +1 = ptr +1 =ptr + sizeof(int) 类型长度
    21. int nRet;
    22. addx(1,2,&nRet); //调用函数
    23. printf("%d",nRet);
    24. //输出 结果 3
    25. printf("%#xp\n",&nRet); //变量不能使用* nRte 取值
    26. //输出结果 0x65fe1cp
    27. return 0;
    28. }

    指针数组的简单使用

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. const int MAX = 3;
    4. int main(int argc, char *argv[]) {
    5. int Array[]={10,20,30};
    6. int i,*ptr[MAX]; // ptr 指针
    7. for (i=0;i<MAX;i++){
    8. ptr[i]=&Array[i];
    9. //赋值为整数的地址
    10. }
    11. for (i=0;i<MAX;i++){
    12. printf("Value of Array[%d]=%d / address is %#xp /The address of the array is %#xp\n",i,*ptr[i],&ptr[i],&Array[i]);
    13. //输出值 指针数组的值 指针数组的地址 数组的地址
    14. /* 输出结果
    15. Value of Array[0]=10 / address is 0x65fda0p /The address of the array is 0x65fdccp
    16. Value of Array[1]=20 / address is 0x65fda8p /The address of the array is 0x65fdd0p
    17. Value of Array[2]=30 / address is 0x65fdb0p /The address of the array is 0x65fdd4p
    18. */
    19. }
    20. return 0;
    21. }

    二维数组

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(int argc, char *argv[]) {
    4. int a[3][3]={
    5. {1,2,3},
    6. {4,5,6},
    7. {7,8,9},
    8. };
    9. int (*p)[3]; //int (*p)[3] 声明一个数组有三个元素
    10. //p 二维数组 首地址
    11. //*p 第一个数组的首地址
    12. p=a;
    13. printf("%d\n",*p[2]+1); //*p[2] 取的是7 如果想取 8 加 一*p[2]+1 前面就说过 二维数组就是行和列 可以这样去看 第三行加1
    14. //printf("%d\n",p[7]); 不加[3]
    15. return 0;
    16. }

    变参传递

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <stdarg.h>
    4. int printStr(int a,...)
    5. {
    6. va_list v1;
    7. int n=0;
    8. va_start(v1,a);
    9. for (int i=0;i<a;i++)
    10. {
    11. n+= va_arg(v1,int);
    12. }
    13. va_end(v1);
    14. return n;
    15. }
    16. int main(int argc, char *argv[]) {
    17. int a=printStr(3,10,20,30);
    18. printf("%d\n",a);
    19. return 0;
    20. }

    变参传递 https://blog.csdn.net/qq_16628781/article/details/72717008