C语言如何片内的SRAM进行读写?如何对一个地址进行读写操作?
int *data = (int*)0x00000001 ;
for(int b=0 ; b < 10 ; b = b +1 )
*data++ = 10 + b ;
for(int b=0 ; b < 10 ; b++)
{
int k = 0 ;
k = *(int*)(0x00000001 + b) ;
}
关于数组你应该要知道:
1、字与字节的关系
字和字节都是计算机的存储单元。字由若干个字节组成,一个字节是8个比特bit。

字长,字的位数,即cpu一次处理二进制代码的位数。字是计算机一次处理数据的最大单位,字的长度与计算架构有关:
32位计算机:1字=32位=4字节
64位计算机:1字=64位=8字节
| 基本类型 | 字节数 | 位数 | 最大值 | 最小值 |
|---|---|---|---|---|
| byte | 1 byte | 8 bit | 127 | -128 |
| short | 2 byte | 16bit | 2^15 - 1 | -2^15 |
| int | 4 byte | 32bit | 2^31 - 1 | -2^31 |
| long | 8 byte | 16bit | 2^15 - 1 | -2^15 |
| float | 4 byte | 32bit | 2^31 - 1 | -2^31 |
| double | 8 byte | 64bit | 2^63 - 1 | -2^63 |
| char | 2 byte | 16bit | 2^16 - 1 | 0 |
2、数组名就是数组首元素的地址。
data = &data[0]
3、指针自加,其地址如何变化?
例
#include <stdio.h>
#define SIZE 4
int main(void)
{
short dates[SIZE];
short * pti;
short index;
double bills[SIZE];
double * ptf;
pti = dates; // 把数组地址赋给指针
ptf = bills;
for (index = 0; index < SIZE; index++)
printf("pointers + %d: %10p %10p\n", index, pti + index,
ptf + index);
return 0
}
结果:
short double
pointers + 0: 0x7fff5fbff8dc 0x7fff5fbff8a0
pointers + 1: 0x7fff5fbff8de 0x7fff5fbff8a8
pointers + 2: 0x7fff5fbff8e0 0x7fff5fbff8b0
pointers + 3: 0x7fff5fbff8e2 0x7fff5fbff8b8

4、指向指针的指针

浙公网安备 33010602011771号