您的位置:首页 > 其它

29.指针数组和数组指针

2018-01-18 10:07 155 查看
指针数组

int *p1[10];


数组的每一个元素都是地址,sizeof(p) = 40;

数组指针

int(*p2)[10];


数组的每一个元素都是一个数组的首地址,sizeof(p2) = 4;

实现不改变原来的数组元素位置来实现冒泡排序,使用指针数组

1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void main()
5 {
6     int a[10] = { 0, 9, 2, 8, 3, 7, 4, 6, 5, 10 };
7     int *p[10];//指针数组
8     for (int i = 0; i < 10; i++)
9     {
10         p[i] = a + i;
11     }
12
13     //冒泡排序
14     for (int i = 0; i < 10 - 1; i++)
15     {
16         for (int j = 0; j < 10 - 1 - i; j++)
17         {
18             if (*p[j]>*p[j + 1])
19             {
20                 int *ptemp = p[j];
21                 p[j] = p[j + 1];
22                 p[j + 1] = ptemp;
23             }
24         }
25     }
26
27     //输出
28     for (int i = 0; i < 10; i++)
29     {
30         printf("\n%d  %d", a[i], *p[i]);
31     }
32
33     system("pause");
34 }


数组指针存储一个二维数组

int a[3][4] = { 0 };
for (int i = 0; i < 12; i++)
{
a[i / 4][i % 4] = i;
}

for (int *p = &a[0][0]; p < a + 3; p++)
{
printf("%d\n", *p);
}

int(*p)[4] = a;//指针数组

for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d    ", p[i][j]);
}
printf("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: