Linux C 程序(TEN)

指针数组和二级指针

 1 #include<stdio.h>
 2 
 3 int main(){
 4         int a[5] = {1,3,5,7,9};
 5         int *p[5], i;
 6         int **pp = p;
 7     //使p指针数组指向每一个a
 8         for(i = 0 ; i < 5 ; i++){
 9                 p[i] =&a[i];
10         }
11     //【】优先级高于* ,*(p[i]) p[i] = &a[i],so==> *p[i] = *&a[i] = a[i]
12         for(i = 0 ; i < 5 ; i++){
13                 printf("%d ",*p[i]);
14         }
15         printf("\n");
16     //p 和 pp都是二级指针,i=0时,*pp=p[0] ,p[0]=&a[i],*pp=a[0].
17     //执行pp++之后,pp指向p[1],*pp=p[1],p[1]=&a[1].
18         for(i = 0 ; i < 5 ; i++,pp++){
19                 printf("%d ",**pp);
20         }
21     
22         return 0 ;
23 }
24 output:
25 1 3 5 7 9
26 1 3 5 7 9


指针与数组的 关系

 1 nclude<stdio.h>
 2 
 3 int main(){
 4         int a[2][5] = {1,3,5,7,9,2,4,6,8,10};
 5         //表示p是一个指针,指向含有五个元素的一维数组
 6         int (*p)[5],i;
 7         //p指向二维数组得第一行
 8         p = a ;
 9     //p=a 之后 , p=&a , *p = a[1].
10     //p是一个数组指针
11         for(i = 0 ; i < 5 ; i++){
12                 printf("%d ",(*p)[i]);
13         //(*p)[i] 是先取p的内容作为数组的起始地址,然后再去第i个元素。
14         //*p[i]是先取以p为起始地址的第i个元素,该元素为指针,然后取该指针的内容。
15         }
16         printf("\n");
17     //p移动到第二行
18         p++;
19         for(i = 0 ; i < 5 ; i++){
20                 printf("%d ",(*p)[i]);
21         }
22         printf("\n");
23 
24         return 0;
25 }
26 
27 int (*p)[5] ;//一个指针
28 int  *p[5]  ; //含有五个元素的数组,长度为5,数组中得每一个元素指向一个整型变量。

 


函数和指针
1.指针作为函数得参数
作用是将一个变量的地址传送到一个函数中

 1 #include<stdio.h>
 2 void change(int i , int *p){
 3         i++;
 4         if(p != NULL){
 5                 (*p)++;//根据地址找到变量b,b+1
 6         }
 7 }
 8 int main(){
 9         int a = 5 , b = 10 ;
10         change(a,&b);
11         printf("a=%d,b=%d",a,b);
12         return 0;
13 }

 




2.返回指针得函数
 1 int *f(int i , int j); 
() 的优先级高于 *
表示 f是一个函数,函数名前有一个指针,表示此函数得返回值类型为指针。

 1 include<stdio.h>
 2 //定义一个名称为name得指针数组,每个数组元素都指向一个字符串
 3 char *name[7] = {"monday","tuesday","wednessday","thursday","friday","saturday","sunday"};
 4 //定义一个指针,这个指针指向一个字符串
 5 char *message = "wrong input";
 6 //返回指针的函数
 7 char *week(int day){
 8         if(day < 0 || day > 7){
 9                 return message ;
10         }else{
11                 return name[day-1] ;
12         }
13 }
14 
15 
16 int main(){
17         int day ;
18         char *p;
19 
20         printf("input a number of a week:\n");
21         scanf("%d",&day);
22     
23         p = week(day);
24         printf("%s\n",p);
25 
26         return 0;
27 }

 



3.指向函数得指针 87页----------

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。