• 欢迎光临~

如何片内的SRAM进行读写?如何对一个地址进行读写操作?

开发技术 开发技术 2022-10-17 次浏览
对指定地址“写”操作

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。
如何片内的SRAM进行读写?如何对一个地址进行读写操作?
字长,字的位数,即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 %10pn", 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

C语言中,地址按字节编址,1字节8bit,其中short类型占用2个字节,double类型占用8个字节。 指针加1指的是增加一个存储单元。对数组意味着把加1后的地址作为下一个元素的地址,而不是下一个字节的地址

如何片内的SRAM进行读写?如何对一个地址进行读写操作?

4、指向指针的指针

喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com