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);
}
相对而言,在不考虑字节序的情况下,整体复制更为简洁易懂。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有