|
发表于 2020-3-9 23:52:10
|
显示全部楼层
数组指针
指向数组的指针
如:
int t1[5] = {1,2,3,4,5};
char t2[5] = {'1','2','3','4','5'}
int (*p1)[5] = &temp;
char (*p1)[5] = &temp; // 字符数组指针特别,可直接写char (*p1)[5] = temp; 但会有提示
- #include<stdio.h>
- int main()
- {
- int temp[5] = {1,2,3,4,5};
- int (*p2)[5] = &temp; // 数组指针 指向temp (p2存放着数组temp的地址)
- int i;
-
- for(i = 0; i < 5; i++)
- {
- printf("%d\n",*(*p2 + i)); // *p2 1层解引用获取数组第0个元素的地址,
- // *(*p) 2层解引用取值。
- // (*p+1) 地址加1
- // *(*p+1) 取值
- }
- }
复制代码
- #include<stdio.h>
- int main()
- {
- char temp[5] = {1,2,3,4,5};
- char (*p2)[5] = temp; // 数组指针 指向temp (p2存放着数组temp的地址)
- int i;
-
- for(i = 0; i < 5; i++)
- {
- printf("%d\n",*(*p2 + i)); // *p2 1层解引用获取数组第0个元素的地址,
- // *(*p) 2层解引用取值。
- // (*p+1) 地址加1
- // *(*p+1) 取值
- }
- }
复制代码
指针数组
数组里面存放着指针变量
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- char *temp[5] = {NULL};
- char *tmp; // 声明个临时指针
- int i;
- // 初始化 指针数组 (存入个数据的地址,这里为了直观,用malloc来申主请内存)
- for(i = 0; i < 5; i++)
- {
- tmp = (char *)malloc(sizeof(char)); // 申请内存
- *tmp = i; // 赋值
- temp[i] = tmp; // 地址存入 指针数组
- }
- // 指针数组 直接打印当然打印的是地址
- for(i = 0; i < 5; i++)
- {
- printf("%d ", temp[i]);
- }
- printf("\n");
- // 指针数组 解引用后才是真正的值
- for(i = 0; i < 5; i++)
- {
- printf("%d ", *temp[i]);
- }
- printf("\n");
- }
复制代码 |
|