灵活运用c语言实现高级功能
C语言以其简洁、灵活、表达能力强,产生的目标代码质量高,可移植性好而著称于世。巧妙、灵活地运用C可以进一步挖掘出其潜在的功能。
1、字符数组和字符指针
指针和数组是C最具特色的一部分。数组是占用预分配的连续空间,C语言中对连续空间的访问可以有以下几种方法:加下标构成数组是最直接的;常量字符串也可以类似访问,例如,下面语句就可将字符串打印出来。
for(i=0;i<15;i++)
putchar(″constant string″[i]);
函数printf()的格式串用字符数组代替,可以灵活地控制输出格式。下面的函数就可以根据参数改变输出格式。
Pr—int(int form,int data)
{
char str[50];
sprintf(star,″%%%dd″,form);
printf(str,data);
}
2、C语言具有很强的内存格式编排功能,主要是通过sscanf()和sprintf()实现的。灵活运用这两个函数可以收到意想不到的效果。例如,数和数字串的转换是常需要的,利用这两个函数可以简单的实现。下面的函数func就实现数到数字串的转换,类似地可以实现其逆功能。
func(int d,char *str)
{
sprintf(str,″%d″,d);
}
3、动态多维数组
C语言本身并没有提供这类功能,而实践中确实常常需要。我们可以用C来实现。下面程序段就动态地实现了二维数组。
int,i,n,m,
double **a,x,
a=(double *)calloc(n,sizeof(double *));
for (j=0;j<n;j++) a[j]=(double *)calloc(m,sizeof(double));
上面程序段定义a为指向指针的指针,然后给a分配一块内存,其格式为双精度指针,最后用for循环语句给指针分配空间,这样就相当于定义了a[n][m]。现在就可以用类似x=a[i][j]之类的语句访间数组元素了。三维甚至更多维动态数组可以类似实现