C語(yǔ)言---數(shù)組指針與指針數(shù)組
2021-11-23 22:11 作者:風(fēng)菩提樹 | 我要投稿
一.數(shù)組指針與指針數(shù)組
1.數(shù)組指針:
?(1)定義及初始化:

int ?array[10] ={0} ;
int ?(*array)[10] = &array;
或者:
int ?*(p)[] = (int (*) []) malloc(10*sizeof(int));
for(int i=0;i<10;i++)
{
(*p)[i] = i+1;
}
free(p);
(2)使用:
for(int i = 0; i<10;i++)
Printf(“%d\t”,*(*p+i));
或者
printf(“%d\t”,(*p)[i]);
?(3)傳參:int Fun(int (* ppp)[]);
?(4)返回值:int (*Fun(int (*ppp)[]))[];
2.指針數(shù)組:
? (1)定義及初始化:

int a= 10 , b = 10 , c = 10;
int *array[3] = {&a,&b,&c};
? 或者:
int *array[5];
for(int n=0;n<5;n++)
{
array[n] = (int *)malloc(sizeof(in));
*array[n] = n+1;
}
?(2)使用:
for(int i=0; i < len ; i++)
{
Printf(“%d”,*array[i]);
或者:
printf(“%d”,**(array+i));
}
?(3)返回值:可以返回(void *)
int ** Fun()
{
int a=8,b=88,c=888,d=8888;
int * array[] = {&a,&b,&c,&d};
int **e = &(p[0]);
return e;
}
二.scanf以及printf應(yīng)該注意的地方
1.scanf();
在要用scanf連續(xù)賦值的地方,要注意其會(huì)有多一個(gè)回車符’\n’輸入到內(nèi)容中。如果緩沖區(qū)還有數(shù)據(jù),scanf()則不會(huì)阻塞等待用戶的輸入。
當(dāng)程序代碼,輸入一個(gè)字母時(shí),會(huì)出現(xiàn)如下情況:

#include
int main()
{
int a;
while(1)
{
printf("輸入一個(gè)數(shù)\n");
scanf("%d",&a);
/*
while(1)
{
if(getchar() == '\n')break;
}
*/
switch(a)
{
case 1 : printf("這是一個(gè)1\n");break;
case 2 :printf("這是一個(gè)2\n");break;
case 3 : printf("這是一個(gè)3\n");break;
default : printf("其他情況\n");break;
}
}
return 0;
}
因此,要添加

這一串代碼來(lái)清除緩沖區(qū);
2.Printf():
在需要連續(xù)打印的地方,要注意添加‘\n’換行符。如果沒(méi)有添加換行符,則緩沖區(qū)需要數(shù)據(jù)充滿,才會(huì)一次性打印出來(lái);


標(biāo)簽: