用 typedef 定義一個數組類型
有 typedef 是類型,沒有是變量
數組類型 typedef int A[8]; 數組類型,int + 8個确定的變量
//typedef int (A)[8];
A b;//int b[8] //去了typedef,b替換到A的位置
//數組指針, 指針數組
//指針數組,它是數組,每個元素都是指針
//數組指針,指向數組的指針
//[]的優先級比*高
char *a[] = {"aaaaa", "bbbbb", "cccccc"};
int main(int argc, char *argv[])
//argc 傳參的個數(包括可執行程式)argv:指針數組,指向輸入的參數
//數組指針,它是指針,指向一個數組的指針
//數組指針,指向一維數組的整個數組,而不是首元素位址
//定義數組指針變量
1.先定義數組類型,根據類型定義指針變量
int a[10] = {0};
typdef int A[10]; //[10]代表步長
//數組指針和指針的差別:
//數組指針的步長是sizeof(int)*10;指針的步長是sizeof(int)
A *p = NULL; //p數組指針類型的變量!!!!!!
p = &a // p = a;警告,a代表首元素位址,a和&a一樣,最終也是當&a處理
for(i = 0; i < 10; i++)
{
//a[];
//p = &a;
//*p = *&a ->a;
(*p)[i] = i+1;
}
for(i = 0; i < 10; i++)
{
printf("%d, ", (*p)[i]);
}
2.先定義數組指針類型,根據類型定義變量
//和指針數組寫法很類似,多了()
//()和[]優先級一樣,左往右 //*p[3] 指針數組;(*p)[] 數組指針 差別
//()有指針,他是一個指針,[]
//指向數組的指針,有typedef,他是一個數組指針類型
int a[10] = {0};
typedef int(*P)[10];
P q; //數組指針變量
q = &a;
for(i = 0; i < 10; i++)
{
(*p)[i] = i+1;
}
for(i = 0; i < 10; i++)
{
printf("%d, ",(*p)[i]);
}
3.直接定義數組指針變量
//和指針數組寫法很類似,多了()
//()和[]優先級一樣,左往右
//()有指針,他是一個指針,[]
//指向數組的指針,沒有typedef,他是一個數組指針變量
int a[10] = {0};
int(*q)[10]; //q數組指針變量
q = &a;
for(i = 0; i < 10; i++)
{
(*p)[i] = i+1;
}
for(i = 0; i < 10; i++)
{
printf("%d, ",(*p)[i]);
}
//數組指針的定義
1.
int a[10] = {0};
typedef int A[10];
A *p1 = &a; //A *p1; p1 = &a;
2.
typedef int (*P)[10];
p q2 = &a; //P q2; q2 = &a;
3.
int (*q3)[10];
q3 = &a; //q3 = &a;