今天因为双核通信,需要共享一块内存,想到C语言可以为一个参数指定地址,那么如何为一个数组指定首地址呢?
借鉴参数指定地址的方法,先想到用一个指针来指向一个数组,同时定义数组的数据类型,我是这样定义的
short (*ptr)[1024;
这样就定义了一个指针,该指针指向数组类型为short类型,切长度为1024,但是这个指针或者说是数组并没有初始化的地址,
于是需要给它初始化一下,也就是指定数组的起始地址,我是这样做的
ptr = (short(*)[1024])0xc0001200;
这里(short(*)[1024])0xc0001200将数字0xc0001200强制转换成(short(*)[1024])的类型的地址,可以理解成一个无名的指针(*)指向一个类型为short,
长度为1024的数组的首地址,该首地址为0xc0001200,并将这个地址赋值给ptr;
下面我通过C编译器进行了验证。
开始时ptr指针的状态是上面这样的,指向地址为0x00000000,指针所在地址为0xc14fcf64
经过ptr = (short(*)[1024])0xc0001200;这一步后,变成如下形式
指针地址已经指向0xc0001200,并且指向一个长度为1024的short类型的数组。