当前位置:   article > 正文

C语言—指针进阶(详解)_c语言指针进阶

c语言指针进阶

大家好,我是Abert,这篇文章跟大家分享指针的高阶内容。众所周知,指针堪称C语言的灵魂,掌握指针是学好C语言的关键。

这篇文章建立在上篇(初阶指针)文章的基础上进行的,建议大家配合上篇文章一起食用效果更佳。

文章目录

1.指针数组

        1.1字符指针数组

        1.2整形指针数组

2.数组指针

3.函数指针

4.函数指针数组

5.结构体指针

6.指针进阶题目

正文

1.指针数组

指针数组是数组,数组内存放的是指针

1.1字符指针数组

存放字符指针的数组 

char* arr[];//存放字符的地址(指针)

1.2整形指针数组

存放整形指针的数组

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a = 1;
  5. int b = 2;
  6. int c = 3;
  7. int d = 4;
  8. int* arr[] = { &a, &b, &c, &d };//整形指针数组
  9. //存放整形的地址(指针)
  10. return 0;
  11. }

2.数组指针

数组指针是指针,存放数组的地址。 

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int arr[10] = { 0 };
  5. int (*p)[10] = &arr;//数组指针,存放整形数组arr的地址
  6. return 0;
  7. }

数组指针与指针数组容易混淆

int arr[5];

arr是一个数组,每个元素是int类型的 ,有5个元素

int* parr1[10];

parr1是一个数组,数组10个元素,每个元素的类型是int*

int (*parr2)[10];

parr2是一个指向数组的指针,指向的数组有10个元素,每个元素的类型是int

int(* parr3[10])[5];

parr3是一个数组,数组有10个元素,每个元素的类型是:int(*)[5]

parr3是存放数组指针的数组

用指针打印数组

  1. #include <stdio.h>
  2. void test(int* ptr, int sz)
  3. {
  4. int i = 0;
  5. for (i = 0; i < sz; i++)
  6. {
  7. printf("%d ", *ptr);
  8. ptr++;
  9. }
  10. }
  11. int main()
  12. {
  13. int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
  14. int* p = arr;//数组首元素的地址
  15. int sz = sizeof(arr) / sizeof(arr[0]);
  16. test(p, sz);
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/650859
推荐阅读
相关标签
  

闽ICP备14008679号