指針數組練習(1)

1.數組指針引用二維數組元素
#include<stdio.h>
#define m 3
#define n 4
int main()
{
 int i,j;
 short array[m][n]={0,1,2,3,4,5,6,7,8,9,10,11};
 short (*pst)[n]=NULL; //定義數組指針 
 pst=array;    //數組指針指向二維數組首地址 
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
  {
   printf("%4d",*(*pst+j));
  }     //數組指針自增運算 
  pst++;    
 }
 printf("\n");
 } 
2.數組指針作二維數組形參,傳遞二維數組首地址,在子函數中實現輸出二維數組中每一行最大值
#include<stdio.h>
#define n 5
void max(int (*ptr)[n])
{
 int i,j,max_value=0;
 if(ptr==NULL)    //非法入參判斷  /*輸入參數檢查, */
 {            /*若入參爲NULL, */
  printf("錯誤,輸入參數爲NULL\n");   /*退出函數*/ 
  return;
 }
 for(i=0;i<n;i++)
 {
  max_value=ptr[i][0]; //首行賦初值 
  for(j=0;j<n;j++)
  {
   if(max_value<*(ptr[i]+j))//條件判斷
   {
    max_value=*(ptr[i]+j);//賦值 
   } 
  }
  printf("最大值爲%5d,第%d行\n",max_value,i); 
 }
 } 
int main()
{
 int array[n][n]={133,-89,0,1025,58,
      40,-78,69,889,20,
      56,28,-45,77,90,
      6,-18,-27,3,1,
      10001,5894,-78564,60,8};
 max(array);
} 
測試結果:
最大值爲 1025,0行
最大值爲  889,1行
最大值爲   90,2行
最大值爲    6,3行
最大值爲10001,4
3.指針數組指向字符串
static char data[8][N]={"Sunday",		//靜態字符數組定義 
      			"Monday",
      			"Tuesday",
      			"Wednesday",
      			"Thursday",
      			"Friday",
      			"Saturday",
      			"Sunday",
      			"Illegal input index"};
該數組可用如下指針數組代替:
static char *data[N]={"Sunday",  		//靜態字符數組定義 
         		"Monday",
         		"Tuesday",
         		"Wednesday",
         		"Thursday",
         		"Friday",
         		"Saturday",
         		"Sunday",
         		"Illegal input index"
元素data[1]指向字符串"Monday"的首地址
4.指針數組指向二維數組
int *p_array[2]=NULL;      //定義含兩個元素指針數組p_array
int array[2][3]={666,555,444,333,222,111}; //定義二維指針array
p_array[0]=array[0];      //使p_array[0]指向array第一行首地址 
p_array[1]=array[1];      //使p_array[1]指向array第二行首地址
不能通過對p_array做自增運算獲取array的第二行首地址,如p_array++是非法的 
5.指向指針的指針(二維指針)

例如:int **p_pointer;將一個二維指針指向另一個指針的地址,並使用其輸出一維指針所指變量值

#include<stdio.h>
int main()
{
 int a=0;
 int *pa=NULL;
 int **p_pa=NULL;
 a=1234;
 pa=&a;
 p_pa=&pa;
 printf("a=%d,*pa=%d,**p_pa=%d\n",a,*pa,**p_pa);
 printf("&a=%x,pa=%x,&pa=%x,p_pa=%x\n",&a,pa,&pa,p_pa);
 return 0;
 } 
 /*測試結果:
 a=1234,*pa=1234,**p_pa=1234
&a=62fe14,pa=62fe14,&pa=62fe08,p_pa=62fe08*/
6.main函數參數

一般定義形式:main(int argc,char *argv[]}
形參中第一個變量argc用於記錄命令行中字符串個數
第二個變量argv用於記錄每一個字符串首地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章