1.陣列名的特殊性
先說結論
陣列名代表陣列首元素位址,也是乙個指標,唯讀的常量,是乙個常量指標,不能修改。
陣列首元素的位址和陣列位址是兩個不同的概念
陣列名是陣列首元素的起始位址,但並不是陣列的起始位址
通過將取位址符&作用於陣列名可以得到整個陣列的起始位址
int c[200]=;
c+1 步長四個位元組
&c+1步長200*4個位元組
#define _crt_secure_no_warnings
#include
#include
#include
//c語言中沒有字串型別,通過字元陣列來模擬字串
//c 庫函式 size_t strlen(const char *str) 計算字串 str 的長度,直到空結束字元,但不包括空結束字元
//sizeof(型別)字串型別,的大小,包括\0;
//c語言中的字串是以』\0』結束的字元陣列
陣列和指標有明顯區別,如圖所示
2.const的用法
const
const
int a;
//int
const b;
const
char
*c;char
*const d;
char buf[
100]
const
char
*const e ;
含義:
//第乙個第二個意思一樣 代表乙個常整形數
//第三個 c是乙個指向常整形數的指標(所指向的記憶體資料不能被修改,但是本身可以修改)
//第四個 d 常指標(指標變數不能被修改,但是它所指向記憶體空間可以被修改)
//第五個 e乙個指向常整形的常指標(指標和它所指向的記憶體空間,均不能被修改)
結論://指標變數和它所指向的記憶體空間變數,是兩個不同的概念。。。。。。
//看const 是放在*的左邊還是右邊 看const是修飾指標變數,還是修飾所指向的記憶體空變數
3.陣列指標、指標陣列
指標陣列就是陣列中的每個元素都是指標
陣列指標用於指向乙個陣列
陣列名是陣列首元素的起始位址,但並不是陣列的起始位址
通過將取位址符&作用於陣列名可以得到整個陣列的起始位址
定義陣列指標的三種方法
void
main()
4.多維陣列的本質
//多維陣列名的本質是陣列指標 指向低維陣列的指標 每次往後跳一維的維數 二級指標
//(a+i)代表整個第i行的位址 二級指標
//*(a+i) 代表第i行首元素位址 一級指標
//*(a+i)+j //&a[i][j]
char cbuf[30]
;// cbuf(1級指標) 代表陣列首元素的位址。。。&cbuf(二級指標) 代表整個陣列的位址
//&cbuf +1 等於跳過了整個陣列 因為指標跳多少是由他指向的資料型別決定的,指向的陣列就一次跳過陣列的大小
char array[10]
[30];
//array是二級指標
//(array + i) //相當於 整個第i行的陣列位址 //二級指標 &cbuf
//(*(array+i))//一維陣列的首位址 cbuf
//(* (array + i)) + j //相當於第i行第j列的位址。。。。&array[i][j]
//* (( * (array + i)) + j) //相當於第i行第j列的值。。。。<====>array[i][j]
2023年的一些回顧
2010年的風風雨雨,也已經過去了,很多事情也只能依稀記得,怎麼說呢?距離成功,距離財務等自由,還有很遠很遠的距離,可以算個轉折年吧。1月,在g公司,專案救火去了廣州,也對國內專案運作有了深刻體會,更加明白了事在人為的道理。外地作軟體專案的辛苦,只有幹過的人才知道。意外知道乙個同學在某行是個很有影響...
2023年的一些回顧
2010年的風風雨雨,也已經過去了,很多事情也只能依稀記得,怎麼說呢?距離成功,距離財務等自由,還有很遠很遠的距離,可以算個轉折年吧。1月,在g公司,專案救火去了廣州,也對國內專案運作有了深刻體會,更加明白了事在人為的道理。外地作軟體專案的辛苦,只有幹過的人才知道。意外知道乙個同學在某行是個很有影響...
關於「事件」的一些回顧
有關於事件的概念呢,記得以前看過乙個例子,關於貓逮老鼠的,就是說,老鼠進到乙個房間裡後,貓就開始逮老鼠。說老鼠不能直接告訴貓你來逮我吧,於是就通過乙個監視器來通知貓,一旦貓看到老鼠就開始逮了,而這個監視器便是 事件 例子 using system using system.collections.g...