1.数组指针

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <stdlib.h>
  4. int main(void)
  5. {
  6. int a[10];
  7. printf("%p\r\n", a);
  8. printf("%p\r\n", &a);
  9. printf("%p\r\n", &a[0]);
  10. printf("%p\r\n", &a[1]);
  11. system("pause");
  12. return 0;
  13. }

image.png

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <stdlib.h>
  4. int main(void)
  5. {
  6. int a[10] = {1,2,3,4,5,6,7,8,9};
  7. int *p = a; //指向数组的指针
  8. printf("a的地址是%p\r\n", a);
  9. printf("p的地址是%p\r\n", p);
  10. p++;
  11. printf("p++;\r\np的地址是%p\r\n", p);
  12. printf("%d\r\n", *p);
  13. system("pause");
  14. //指针的初始化
  15. int i = 1;
  16. int* p = &i;
  17. int *q;//现在不能直接赋值,还没有地址呢
  18. q = &i;
  19. return 0;
  20. }

image.png

1.1数组的形参和数组的长度

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <stdlib.h>
  4. void minmax(int a[], int len, int* max, int* min);
  5. int main(void)
  6. {
  7. int a[] = { 1,2,3,4,5,6,7,8,9,12,13,14,16,17,21,23,55};
  8. int min, max;
  9. //数组的长度表示 sizeof(a) / sizeof(a[0])
  10. printf("sizeof(a)=%d,sizeof(a[0])=%d\n", sizeof(a), sizeof(a[0]));
  11. minmax(a, sizeof(a) / sizeof(a[0]), &min, &max);
  12. printf("min=%d,max=%d\n", min, max);
  13. system("pause");
  14. return 0;
  15. }
  16. void minmax(int a[], int len, int* min, int* max)
  17. //也可以写成 void minmax(int *a, int len, int* min, int* max)数组传入的就是指针
  18. //也就是int a[] == int * const a; a的地址是不可以被改变的
  19. {
  20. int i;
  21. *min = *max = a[0];
  22. for (i = 1; i < len; i++)
  23. {
  24. if (a[i] < *min)
  25. {
  26. *min = a[i];
  27. }
  28. if (a[i] > *max)
  29. {
  30. *max = a[i];
  31. }
  32. }
  33. }

image.png

2.动态分配空间

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <stdlib.h>
  4. int main(void)
  5. {
  6. int number;
  7. int* a = NULL;
  8. scanf_s("%d", &number);
  9. a = (int *)malloc(number * sizeof(int));
  10. printf("a=%d\n", sizeof(a));
  11. free(a);
  12. a = NULL; //一个malloc一定对应一个free,并且之后再转换成空指针
  13. printf("a=%p\n", a);
  14. system("pause");
  15. return 0;
  16. }