在平时的代码中,经常要使用到动态的指针数组,但指针数组特别容易和数组指针弄混,因为对符号的优先级别没有弄清楚,导致用混,导致最后代码的结果不是自己想要的.下面就是他们的申请方式.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
// 动态指针数组的申请1
char **p = (char **)malloc(sizeof (char*)* 5);
for (int i = 0; i < 10; i++)
{
p[i] = (char *)malloc(sizeof (char)* 10);;
}
for (int i = 0; i < 50; i++)
{
p[i / 10][i % 10] = i;
}
for (int i = 0; i < 50; i++)
{
printf("%d ", p[i/10][i%10]);
}
printf("\n****************************************\n");
// 动态指针数组申请2
int (*pp)[10] = (int(*)[10])malloc(sizeof(int[10])*5);
for (int i = 0; i < 50; i++)
{
pp[i / 10][i % 10] = i;
}
for (int i = 0; i < 50; i++)
{
printf("%d ", pp[i / 10][i % 10]);
}
printf("\n****************************************\n");
// 数组指针的写法
int a[5][10];
int (*ppp)[10] = a;
for (int i = 0; i < 50; i++)
{
ppp[i / 10][i % 10] = i;
}
for (int i = 0; i < 50; i++)
{
printf("%d ", ppp[i / 10][i % 10]);
}
}