1、字符數(shù)組和字符指針
指針和數(shù)組是C最具特色的一部分。數(shù)組是占用預(yù)分配的連續(xù)空間,C語(yǔ)言中對(duì)連續(xù)空間的訪問可以有以下幾種方法:加下標(biāo)構(gòu)成數(shù)組是最直接的;常量字符串也可以類似訪問,例如,下面語(yǔ)句就可將字符串打印出來(lái)。
for(i=0;i<15;i++)
putchar(″constant string″[i]);
函數(shù)printf()的格式串用字符數(shù)組代替,可以靈活地控制輸出格式。下面的函數(shù)就可以根據(jù)參數(shù)改變輸出格式。
Pr—int(int form,int data)
{
char str[50];
sprintf(star,″%%%dd″,form);
printf(str,data);
}
2、C語(yǔ)言具有很強(qiáng)的內(nèi)存格式編排功能,主要是通過sscanf()和sprintf()實(shí)現(xiàn)的。靈活運(yùn)用這兩個(gè)函數(shù)可以收到意想不到的效果。例如,數(shù)和數(shù)字串的轉(zhuǎn)換是常需要的,利用這兩個(gè)函數(shù)可以簡(jiǎn)單的實(shí)現(xiàn)。下面的函數(shù)func就實(shí)現(xiàn)數(shù)到數(shù)字串的轉(zhuǎn)換,類似地可以實(shí)現(xiàn)其逆功能。
func(int d,char *str)
{
sprintf(str,″%d″,d);
}
3、動(dòng)態(tài)多維數(shù)組
C語(yǔ)言本身并沒有提供這類功能,而實(shí)踐中確實(shí)常常需要。我們可以用C來(lái)實(shí)現(xiàn)。下面程序段就動(dòng)態(tài)地實(shí)現(xiàn)了二維數(shù)組。
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分配一塊內(nèi)存,其格式為雙精度指針,最后用for循環(huán)語(yǔ)句給指針分配空間,這樣就相當(dāng)于定義了a[n][m],F(xiàn)在就可以用類似x=a[i][j]之類的語(yǔ)句訪間數(shù)組元素了。三維甚至更多維動(dòng)態(tài)數(shù)組可以類似實(shí)現(xiàn)。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |