赞
踩
大家好,我是Abert,这篇文章跟大家分享指针的高阶内容。众所周知,指针堪称C语言的灵魂,掌握指针是学好C语言的关键。
这篇文章建立在上篇(初阶指针)文章的基础上进行的,建议大家配合上篇文章一起食用效果更佳。
1.1字符指针数组
1.2整形指针数组
1.指针数组
指针数组是数组,数组内存放的是指针
1.1字符指针数组
存放字符指针的数组
char* arr[];//存放字符的地址(指针)
存放整形指针的数组
- #include <stdio.h>
- int main()
- {
- int a = 1;
- int b = 2;
- int c = 3;
- int d = 4;
-
- int* arr[] = { &a, &b, &c, &d };//整形指针数组
- //存放整形的地址(指针)
- return 0;
- }
数组指针是指针,存放数组的地址。
- #include <stdio.h>
- int main()
- {
- int arr[10] = { 0 };
- int (*p)[10] = &arr;//数组指针,存放整形数组arr的地址
-
-
-
- return 0;
- }
数组指针与指针数组容易混淆
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是存放数组指针的数组
用指针打印数组
- #include <stdio.h>
-
- void test(int* ptr, int sz)
- {
- int i = 0;
- for (i = 0; i < sz; i++)
- {
- printf("%d ", *ptr);
- ptr++;
- }
- }
-
- int main()
- {
- int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
- int* p = arr;//数组首元素的地址
- int sz = sizeof(arr) / sizeof(arr[0]);
- test(p, sz);
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。