欢迎光临散文网 会员登陆 & 注册

C语言---数组指针与指针数组

2021-11-23 22:11 作者:风菩提树  | 我要投稿

一.数组指针与指针数组

1.数组指针:

 (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.指针数组:

  (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应该注意的地方

1.scanf();

在要用scanf连续赋值的地方,要注意其会有多一个回车符’\n’输入到内容中。如果缓冲区还有数据,scanf()则不会阻塞等待用户的输入。

当程序代码,输入一个字母时,会出现如下情况:

#include 

int main()

{

int a;

while(1)

{

printf("输入一个数\n");

scanf("%d",&a);

/*

while(1)

{

if(getchar() == '\n')break;

}

*/

switch(a)

{

case 1 : printf("这是一个1\n");break;

case 2 :printf("这是一个2\n");break;

case 3 : printf("这是一个3\n");break;

default : printf("其他情况\n");break;

}

}

return 0;

}

因此,要添加

这一串代码来清除缓冲区;

2.Printf():

在需要连续打印的地方,要注意添加‘\n’换行符。如果没有添加换行符,则缓冲区需要数据充满,才会一次性打印出来;


C语言---数组指针与指针数组的评论 (共 条)

分享到微博请遵守国家法律