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);
}
相對而言,在不考慮字節序的情況下,整體復制更為簡潔易懂。