怎樣定義一個指針,指向一個數組?
1、用數組類型加 * 定義數組指針
代碼1:
#include <stdio.h>
int main()
{
? ? int i=0;
? ? typedef int (MYARR5)[5];//抽象出數組類型
? ? MYARR5 array;? // 用數組類型定義變量
? ? MYARR5 *parray;// 用數組類型定義指針變量
? ? parray=&array;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? (*parray)[i]=i+1;? // 必須特別注意parray加星號*后,要加括號,防止與后面的中括號結合。不然會造成內存非法訪問!
? ? }
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? printf("array[%d]: %d \n ", i, (*parray)[i]);
? ? }
? ? return 0;
}
2、可以聲明數組指針類型,用數組指針類型直接定義數組指針變量
代碼:
#include <stdio.h>
int main()
{
? ? int i=0;
? ? //typedef int (MYARR5)[5];//抽象出數組類型
? ? typedef int (*PMYARR)[5];
? ? PMYARR parray; //編譯器分配一個指針變量;
? ? int array[5];
? ? parray=&array;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? (*parray)[i]=i+1;? // 必須特別注意parray加星號*后,要加括號,防止與后面的中括號結合。不然會造成內存非法訪問!
? ? }
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? printf("array[%d]: %d \n ", i, (*parray)[i]);
? ? }
? ? return 0;
}
3、直接定義數組指針變量的方法:
前兩種方法都是通過類型定義變量,比較麻煩??梢灾苯佣x:int? (*parray)[5];
#include <stdio.h>
int main()
{
? ? int i=0;
? ? //typedef int (MYARR5)[5];//抽象出數組類型
? ? //typedef int (*PMYARR)[5];
? ? //PMYARR parray; //編譯器分配一個指針變量;
? ? int (*parray)[5];//直接定義一個指向數組的數組指針變量。
? ? int array[5];
? ? parray=&array;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? (*parray)[i]=i+1;? // 必須特別注意parray加星號*后,要加括號,防止與后面的中括號結合。不然會造成內存非法訪問!
? ? }
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? printf("array[%d]: %d \n", i, (*parray)[i]);
? ? }
? ? return 0;
}
c語言中的比較難的語法:
數組類型,數組指針類型,數組指針變量
函數數據類型,使用函數數據類型定義函數類型變量,函數數據類型的指針