C語言中指標和陣列名小趣

2021-04-13 08:45:59 字數 667 閱讀 4104

在c語言中,指標和陣列名通常都可以混用。

例如char *p;

訪問時,*p跟p[0]是一樣的,*(p+1)跟p[1]是一樣的。

對於陣列

char b[5];

訪問時,b[0]跟*b是一樣的,b[2]跟*(b+2)是一樣的。

在一般的通訊中(例如串列埠),通常都使用位元組傳輸。而像float,long int之類的,

有4位元組。我的方法就是取它的位址,強制轉換為char型指標,然後當作陣列來用。

float x;

sbuf=((char*)&x)[0];

sbuf=((char*)&x)[1];

sbuf=((char*)&x)[2];

sbuf=((char*)&x)[3];

接收時,剛好倒過來。

更有趣的是,對於陣列形式,陣列名和後面的偏移量可以隨便換。

char buff[10];

//或者用 char *buff=&buffer;

buff[3]=0xaa;

3[buff]=0xaa;  //居然是一樣的,昏倒...

因此,我認為編譯器是這麼幹的:對於形如***[yyy]這樣的表示式,會轉化為*(***+yyy),

因此寫成***[yyy]或者寫成yyy[***]都無所謂了...非典用法,請勿亂用,出了事偶不負責...

C語言中指標和陣列

首先,明確乙個概念,指標是什麼,一旦提到這個老生常談且富有爭議性的話題,那真是1000個人有1000種看法。在國內的很多教材中,給出的定義一般就是 指標就是位址 從初步理解指標的角度來說,這種說法是最容易理解的,但是這種說法明顯有它的缺陷所在。指標就是位址 這種說法相當於 指標 字面值位址 或者說乙...

C語言中陣列名和陣列下標

整理自 c陷阱與缺陷 陣列注意點 1.c陣列中只有一維陣列,陣列的大小必須在編譯期作為常數確定。但c陣列的元素可以是任何型別的物件,當然也可以是另乙個陣列,所以 出乙個多維陣列。不太明白為什麼要強調只有一維陣列,難道 模擬 出來的多維陣列和真正的多維陣列不一樣?2.對於乙個陣列,我們只能夠做兩件事 ...

c語言中陣列名和陣列名取位址理解

1 陣列名是個指標型常量,也就是值不能被改變。指標常量和常量指標區別見本文 char str hello char ch 6 hello ch str 錯誤,常量不能被賦值,正如 1 2,字面值常量1被賦值為2一樣錯誤。char ch 2 定義後,陣列名相當於char const ch 0x.ch就...