倍福指针使用——始终为字节形式

bash 复制代码
PROGRAM MAIN
VAR
	a1 :ARRAY[1..10] OF INT;
	a2 :ARRAY[1..10] OF INT;
	i :INT;
	
	p : POINTER TO INT;
	p1: POINTER TO INT;
	p2: POINTER TO INT;
	pValue1 :INT;
	pValue2 :INT;
END_VAR


FOR i:=1 TO 10 BY 1 DO
	a1[i] := i+10;
END_FOR

p := ADR(a1[1]);
p1:= p+1;
p2:= p+2;
pValue1 := p1^;
pValue2 := p2^;
memcpy(ADR(a2[1]), p, 10);

这里采用两种方式分析指针:

  1. 对指针p分别加1、加2,然后取值,得到pvalue1、 pvalue2,可以发现只有加2时才指向正确的下一个int值:12,说明指针还是byte类型,需要加2个字节才到下一个int. 注意在c内,运行同样逻辑,pvalue1=12,pvalue2=13。

2.使用memcpy函数,拷贝10个字节,可以看到数组a2前五个int有值,这个只能说明memcpy是按字节长度拷贝数据

相关推荐
星晨雪海10 分钟前
基于 @Resource 的支付 Service 多实现类完整示例
java·开发语言
ACP广源盛1392462567333 分钟前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
Ricky_Theseus1 小时前
C++右值引用
java·开发语言·c++
Rick19931 小时前
Java内存参数解析
java·开发语言·jvm
勿忘,瞬间1 小时前
多线程之进阶修炼
java·开发语言
hoiii1872 小时前
CSTR反应器模型的Simulink-PID仿真(MATLAB实现)
开发语言·matlab
炘爚2 小时前
C++ 右值引用与程序优化
开发语言·c++
si莉亚3 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源
清心歌3 小时前
CopyOnWriteArrayList 实现原理
java·开发语言
良木生香3 小时前
【C++初阶】C++入门相关知识(2):输入输出 & 缺省参数 & 函数重载
开发语言·c++