我想在特定地址
addr
创建一个整数数组array[3]
,并使用{1, 3, 6}
进行初始化。我该怎么做?int addr = 0x40000;
((int *)addr)[3] = { 1, 3, 6 }; //Error
addr
创建一个整数数组array[3]
,并使用{1, 3, 6}
进行初始化。我该怎么做?int addr = 0x40000;
((int *)addr)[3] = { 1, 3, 6 }; //Error
你无法在该位置初始化数组,甚至无法声明存在一个数组。
但是,你可以使用指针来操作已经存在于该位置的值。
事实上,你已经很接近了:
int* addr = (int*)0x40000;
addr[0] = 1;
addr[1] = 3;
addr[2] = 6;
volatile int *addr = (volatile int*)0x40000;
。如果值可以在应用程序上下文之外改变或者设置一个值会触发某种硬件操作,那么这是非常有用的。 - EricS