陣列:陣列是儲存多個相同型別資料元素的集合。
陣列在記憶體中就是一段連續的空間,每個元素的型別都是一樣的。
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元素的陣列。其實這兩種寫法主要是因為運算子的優先...