struct (指標題)不能正確輸出hello

2021-08-07 13:04:29 字數 1698 閱讀 8644

struct data3_t *pdata=(struct data3_t*)&str; printf("data:%s%s\n",str.data,(char*)(&(pdata->data[0])));

struct data2_t *pdata=(struct data2_t*)&str; printf("data:%s%s\n",str.data,(char*)(pdata->data[0]));

struct data1_t *pdata=(struct data1_t*)&str;printf("data:%s%s\n",str.data,(char*)(pdata->data));

struct str_t *pdata=(struct str_t*)&str; printf("data:%s%s\n",str.data,(char*)(pdata->data));
這裡面的關鍵是:  「取這個變數的位址」  和  「把變數的值當作位址」  的區別。這題應該  「取變數的位址」

主要是因為c++中定義了箭頭運算子,箭頭運算子把解引用和成員訪問兩個操作結合在一起,

也就是說it->men 和 (*it).men表達的含義相同,那麼也就是說pdata->data[0]實際上指的是陣列首元素而不是位址

第乙個輸出 d,

第二個輸出 dd,

在32位小端的機器上,如下**輸出是什麼:

輸出是:

0x201 , 0x605 , 0x807060504030201 , 0x0
小端機器的資料高位位元組放在高位址,低位位元組放在低位址。

char array[12] = ; 

1,char一位元組,直觀呈現的結果為:0x08-07-06-05-04-03-02-01

(從後到前下標為0-7);

2,short兩位元組,直觀呈現 的結果 為: 0x0807-0605-0403-0201 

(從後到前

下標為0-3) :

*pshort從0開始,所以0x201;

*(pshort+2)從2開始,所以0x605;

3,int64八字節,直觀呈現 的結果 為 0x0807060504030201 

(從後到前

下標為0) :

*pint64從0開始,所以0x807060504030201;

4,int四位元組,直觀呈現為0x08070605-04030201

(從後到前

下標為0-1) :

*(pint+2))從2開始,但是最多隻到下標1,後面位置預設為0。

函式指標 結構體struct

include typedef int func t typedef struct sopopnum int add int num1,int num2 int sub int num1,int num2 int mult int num1,int num2 int div int num1,int...

vim不能正確顯示中文

我自己的配置檔案在我工作環境下面 中文字型好像只有兩三種 中文字顯示成為了框框。檢視配置檔案 fileencodings fileencoding termencoding都已經設好 並且,在vim中ggvg然後到notepad中c v,notepad中能夠顯示。搞了一會,發現搞不定,這時候大蝦st...

Safari不能正確解析yyyy mm dd

昨天寫 遇到的乙個bug,在chrome上顯示得好好的時間,一到safari就提示 invalid date 於是回來看 為了一目了然,進行一些處理 var deadline new date 2016 06 10 23 59 這行 是將資料庫中存的日期 2016 06 10 字串轉成date物件。...