你該明白的

2021-06-09 04:00:38 字數 1796 閱讀 5198

1 x86小端模式下

int a = 0x123456;

char *p = &a;

*(p+1) 的值0x34,因為p指向的是變數a記憶體單元最小位址處

,char型指標指向的是乙個位元組的空間所以char型指標+1移動8位,int型指標指向的是4個位元組的空間所以int型指標+1移動32位。

2 x86小端模式下 (str指向的是陣列記憶體單元最小位址處)

char str ="123456789";

*(char *)((short*)str+2))的值是『5』

3 char *p;p是乙個變數,這個變數的值是乙個位址,佔4個位元組

p = (char *)malloc(sizeof(char) * 10);系統開闢了一塊記憶體,將記憶體的位址放到p,p這個變數此時的值就是新記憶體的位址了。

char **q;

*q = (char *)malloc(sizeof(char) * 10);*q就是p變數的值,只要p變數的值變了就ok了

下段**的執行結果:

main() ; 

int *ptr=(int *)(&a+1);  

printf("%d,%d",*(a+1),*(ptr-1));  }

答:2,5 

*(a+1

)就是a[1],*(ptr-1)就是a[4],執行結果是2,5 

&a+1不是首位址+1,系統會認為加乙個a陣列的偏移,是偏移了乙個陣列的大小(本例是5個int) 

a,&a的位址是一樣的,但意思不一樣 

a是陣列首位址,也就是a[0]的位址,&a是物件(陣列)首位址, 

a+1是陣列下一元素的位址,即a[1],&a+1是下乙個物件的位址,即a[5].

4 typedef struct p;

p *p = (p*)malloc(sizeof(p));這裡開闢的空間只是給變數name開闢了4個位元組用來放後來開闢的位址

p -> name = (char *)malloc(sizeof(char *) * 10);

5 int a = 5;b = 3;

if(!a && b++){}

這時候a的值是5b的值是3.為什麼呢。因為!a的值是0了,那麼!a && b++的值就已經確定了,不會再執行b++了。

6 變成風格:

if( 「a" ==i )這種風格較好:因為如果把"a" == i寫成"a" = i的話編譯器會自動報錯,因為不能給常量賦值呀。

7 int a的bit3位置1,也就是第四位

a |= (0x1 << 3)

8      

char *str = "hello world!";

char *s = (char *)malloc(sizeof(char) * 20);

memset(s, 0, sizeof(s));

char *ss = s;//知道為什麼這麼寫嘛。s指向的一整塊記憶體。不能s++遍歷。

assert(s && str);

while(*str)

*ss = *str;//for '\0'

printf("%s\n", s); 9

char buf[10] = "123456789";

int *p = (int *)buf;

printf("%d\n", *(buf + 1));buf一次指向乙個位元組的記憶體,要把這乙個位元組的內容'2'以%d的形式列印出對應的ascii值(也就是說char型'2'與int型50在記憶體中二進位制值是一樣的)

printf("%d\n", *(p + 1));p一次指向4個位元組的記憶體,要把這4個位元組的記憶體"5678"以%d的形式列印出

男人25歲之前該明白的

1 男人是社會的主體,不管你信或不信。所以男人應該有種責任感。2 25歲之前,請記得,愛情通常是假的,或者不是你所想象的那樣純潔和永遠。如果你過了25歲,那麼你應該懂得這個道理。3 吃飯7成飽最舒服。對待女友最多也請你保持在7成。4 30歲之前請愛惜自己的身體,前30年你找病,後30年病找你。如果你...

關於你明白了嗎的回答?

最近在看一些管理書籍,今天開公司例會,坐在下面腦子裡,浮現出乙個情景 經常見到公司旁邊的的飯店經理經常上班前對員工進行培訓,其中經常聽到 大家明白嗎?這時通常大家會回答明白了,如果員工回答的不夠大聲,經理通常會說 我沒聽見 這時員工通常會在大聲重複一遍 明白了 我們在軍訓的時候也會聽到這種 明白了 ...

malloc realloc和new你明白了麼?

sdkint winapi winmain hinstance hinstance,hinstance hprevinstance,lptstr lpcmdline,intncmdshow free pbuf sleep 1000 pvoid pbuf malloc 2 for inti 0 i m...