指標與陣列

2021-09-10 16:42:20 字數 2811 閱讀 8057

陣列:陣列是儲存多個相同型別資料元素的集合。

陣列在記憶體中就是一段連續的空間,每個元素的型別都是一樣的。

sizeof();

sizeof(陣列名)     //所佔記憶體的大小

sizeof(型別)      //某型別在記憶體中的大小

sizeof(陣列名)/sizeof(型別)//記憶體中元素的個數

一維陣列

int array = ;    //定義陣列並維陣列成員初試化值

int array[10] = ;

int array[10] = ; //前5個成員初試化值,其餘為0

int array[10] = ; //初試化值為0

//字元陣列

char buf = "hello world!";

char buf[10] = ;

二維陣列

int array[2][3] = ,}; //定義乙個2行3列二維陣列,並初始化初值
在c語言當中,大多數字串操作其實就是指標操作

char s = "hello world";

char *p = s;

p[0] = 'a';

printf("s = %s\n",s); //aello world

char buf[100] = "hello world";

char *p = buf;

//*(p + 5) = 'a';

//p[5] = 'b';

p += 5;

*p = 'c';

p[3] = ' ';

printf("buf = %s\n", buf); //hellocwo ld

注意上面**中的p[3] = ' ';這個p[3]所訪問的位置是在p+=5;的基礎上。

char buf[10] = ;

char *p = buf;//陣列首元素的首位址

char *p1 = &buf[0];

char *p2 = &buf[1];

char *p3 = &buf[2];

p3 += 1;

*p3 = 100;

p3 -= 2;

*p3 = 70;

printf("%d,%d,%d,%d\n",p,p1,p2,p3);

printf("%d,%d,%d,%d\n",*p,*p1,*p2,*p3);

printf("%d\n",p3-p1);

//p = buf;指標p指向了資料buf的首位址

//p3 += 1;指標向後移動乙個位元組指向位址 &buf[3]

//p3 -= 2;指標向前移動兩個位元組指向位址 &buf[1]

//p3-p1;兩個指標相減可以得到兩個陣列元素的相對距離

注意:在寫**中遇到乙個問題,在c語言中,char *p = &buf和char *p = buf都可以執行通過,而在c++中會報錯

"int (*)[5]" 型別的值不能用於初始化 "int *" 型別的實體
原因是在c語言中型別檢查不嚴格,不會報錯,在c++中型別檢查嚴格,賦值符號「=」號兩邊的資料型別必須是相同的,如果不同,則需要顯示或隱式型別轉換。在這裡的p都是指標,陣列首元素的位址。(&buf是指整個陣列的首位址,而buf是指數組首元素的首位址)

int buf[10] = 

//通過指標來遍歷輸出

void myprint(int buf)

}

int array[10] = ;

void inverseoperation(int array)

}

int array[10] = ;

int max(int *s)

return value;

}

求陣列第二大值

int array[10] = ;

int smax(int *s)

else if(max > *(s + i) && *(s +i) > s_max)//當前的值小於最大值,並且大於第二大值,則存放到s_max中

}return s_max;

}

ipv4位址的大小

最大:「255.255.255.255」 = 15個位元組

最小:「1.1.1.1」 = 7個位元組

通常:「192.168.0.1」 = 11個位元組

ip在網路中傳遞的時候是乙個dword,就是乙個int

將乙個ip為192.168.3.1的位址儲存到4個位元組大小的int型別中(10進製轉為16進製制) <==>(16進製制轉10進製)

//假如有ip = 192.168.3.1

int ip = 0;

unsigned char *p = &ip;

*p = 192;

p++;

*p = 168;

p++;

*p = 3;

p++;

*p = 1;

printf("ip = %d\n",ip);

//整數轉換為字元

void iptochar(int n)

將乙個字元陣列轉換為整數

char s[100] = "192.168.3.1";

int chartoip(char s)

指標與陣列,指標陣列 陣列指標

int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...

指標陣列與陣列指標

1.指標陣列 指標陣列中每乙個元素都是乙個指標,也既是存放字串的首位址。所以指標陣列適合處理若干個長度不等的字串。定義的一般形式為 型別說明符 指標陣列名 陣列長度 例如 int p 3 宣告乙個陣列,指標陣列p,由3個int型別指標變數元素組成 從運算子的優先順序分析,由於 的優先順序大於 所以p...

指標陣列與陣列指標

呵呵,實在是厭倦了繞口的解釋。指標陣列,故名思義,就是指標的陣列,陣列的元素是指標 陣列指標,同樣,就是直想陣列的指標。簡單舉例說明 int p 2 首先宣告了乙個陣列,陣列的元素是int型的指標。int p 2 宣告了乙個指標,指向了乙個有兩個int元素的陣列。其實這兩種寫法主要是因為運算子的優先...