欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

C語言中怎么用32位整數初始化一個全局數組的4個字節

劉柏宏2年前26瀏覽0評論

C語言中怎么用32位整數初始化一個全局數組的4個字節?

全局與局部或靜態的區別只在于分配的內存空間的位置不同,全局或靜態在進程的堆空間分配內存,局部在棧空間中分配內存,本質上都是內存空間。若要考慮全局變量的多線程訪問安全,則需要加互斥信號量控制,本回答暫不考慮互斥訪問控制。

32位整數在內存中占4個字節(當然是連續的4個字節),數組就是連續內存區。

理解了以上知識,就可以解決這個問題了。可以整體復制內存值,代碼為:

int nVal=0;

memcpy(a, &nVal, 4); // a是數組變量

假設數組是字節元素數組(unsigned char a[N]),也可以按字節一個一個賦值初始化(有可能需要考慮字節序,此處不考慮),代碼如下:

int nVal=0;

for(int i=0; i<4; i++)

{

a[i]=(unsigned char)(nVal>>(8*i) & 0x000000ff);

}

相對而言,在不考慮字節序的情況下,整體復制更為簡潔易懂。

memcpy java,C語言中怎么用32位整數初始化一個全局數組的4個字節