利用指针数组的便捷之处:
示例:
阿拉伯数字翻译成罗马数字;(在之前博客提过,但当时未曾接触指针,今天再次拿出来细品)
#include<stdio.h>
#include<string.h>
int main()
{
char a[][10][10]={
"","I","II","III","IV","V","VI","VII","VIII","IX",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC",
"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
};
int n,t,i,m;
printf("Please input number: ");
scanf("%d",&n);
printf("Output:\n");
if(n<=0 || n>=1000)
{
printf("Input error!\n");
return 0;
}
printf("%d=",n);
for(m=0,i=1000;m<3;m++,i/=10)
{
t=(n%i)/(i/10);
printf("%s",a[2-m][t]);
}
putchar(10);
return 0;
}
这是三维数组写出的,在未学过指针前方便理解。
利用指针数组可体现出指针可直接指向整个字符串。
#include<stdio.h>
int main()
{
char *a[][10]={
"","I","II","III","IV","V","VI","VII","VIII","IX",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC",
"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
};
int n,t,i,m;
printf("Please input number: ");
scanf("%d",&n);
printf("Output:\n");
if(n<=0 || n>=1000)
{
printf("Input error!\n");
return 0;
}
printf("%d=",n);
for(m=0,i=1000;m<3;m++,i/=10)
{
t=(n%i)/(i/10);
printf("%s",a[2-m][t]);
}
putchar(10);
return 0;
}
对于以下语句分析:
t=(n%i)/(i/10);
第一次循环:
255%1000其值不为0;
用以下代码实践
#include <stdio.h>
int main()
{
printf("a=%d\n",255%1000);
return 0;
}
二维数组指向运算示例:
#include<stdio.h>
int main()
{
int i,j,cnt=1;
int array[5][6];
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
array[i][j]=cnt++;
}
}
printf("%d\n%d\n%d\n%d\n",array[2][3],*(*(array+2)+3),*(array[2]+3),(*(array+2))[3]);
return 0;
}