int main01() { int i = 0; //a代表數組首元素的地址,不是整個數組的地址 //&a表示整個數組的地址 &a a代表的數據類型不一樣 //&a 數組類型 int[10] //a 數組首元素的類型 int a[10] = {1,2}; //其他初始化爲0 int b[] = {1,2}; int c[20] = {0}; //編譯期間搞定 for (i=0; i<10; i++) { printf("%d ",a[i]); } memset(a,0, sizeof(a)); //手工的賦值 system("pause"); /**/
return 0; }
void main02() { int i = 0; //我聲明瞭一個數組類型 typedef int(MyArr5)[5]; int a;// &a; //用數據類型定義一個變量 MyArr5 arr5; //相當於int arra[5];
for (i=0; i<5; i++) { arr5[i] = i+1; }
for (i=0; i<5; i++) { printf("%d \n", arr5[i]); } printf("%d\n", sizeof(arr5)); //解決指針步長問題 printf("%d %d\n", &arr5, &arr5 + 1);//跨過整個數組,步長爲5*4 system("pause"); } |
三種定義數組指針的方法: 1)定義一個數組類型,利用它來定義它的指針 //我聲明瞭一個數組類型 (固定大小內存塊的別名) typedef int(MyArr5)[5]; //定義一個指向數組類型的指針變量 MyArr5 *pArray;// &a; MyArr5 *pArray = &a1 2)直接定義一個數組指針類型 typedef int(*MyArr5)[5]; MyArr5 pArray pArray myP = &a 3)不聲明,直接定義數組指針 int (*Myarr)[5] = &a |
#include "stdio.h" #include "stdlib.h" #include "string.h"
int get(char *const p) {
} /* typedef struct _Teacher { char name[64]; int age ; }Teacher, *pTeacher; pTeacher t1; */ void main() { int a; int *p = NULL; int i = 0;
//我聲明瞭一個數組類型 (固定大小內存塊的別名) typedef int(MyArr5)[5]; //定義一個指向數組類型的指針變量 MyArr5 *pArray;// &a;
{ int j = 0; int *pI = &j; } { //int buf[10][30] //a1代表數組首元素的地址(不是整個數組的地址),請問a1 指針變量 //1變量-->2指針變量--》 3常量指針變量 (常量指針) //結論:不能被隨便的改變指針變量的值(不能隨便的改變指針的指向) //爲什麼它是一個const
//4在定義a1[5]的時候,編譯器分配內存,爲了能順利的回收內存,爲了有機會讓編譯器拿到原始內存首地址。 //編譯器就把a1做成const量。 //不能深入的理解c指針各種現象,是產生bug的根源
int a1[5] = {1,3,4,55, 6}; //char *p = &a1; //a1 = 0x11;
//給數組指針賦值 需要。。。&a1 MyArr5 *pArray = &a1; //4個字節 //用數組指針去遍歷數組 for (i=0; i<5; i++) { //a1[i] = i; // = i; printf("%d ", (*pArray)[i]); } }
{ //直接定義一個 數組指針類型 用這個類型定義指針變量 //我聲明瞭一個數組類型 (固定大小內存塊的別名) typedef int(MyArr5_1)[5]; //定義一個指向數組類型的指針變量 //聲明一個 數組指針類型 typedef int (*PMyArr5)[5]; PMyArr5 myP = NULL;
int b[5] = {1,3,4,55, 6};
myP = &b;
for (i=0; i<5; i++) { //a1[i] = i; // = i; printf("%d ", (*myP)[i]); } }
{ int c[5] = {1,3,4,55, 6}; //定義一個指向數組的指針變量 int (*myparra)[5] = &c; for (i=0; i<5; i++) { printf("%d ", (*myparra)[i]); } } system("pause"); } |
數組指針的分析
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.