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

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是按字节长度拷贝数据

相关推荐
2301_765703142 小时前
C++中的职责链模式实战
开发语言·c++·算法
f狐0狸x2 小时前
【C++修炼之路】C++ list容器基本用法详解
开发语言·c++·list
坚持就完事了2 小时前
Java的OOP
java·开发语言
jllllyuz2 小时前
基于MATLAB的锂电池物理对象建模实现
开发语言·matlab
MyBFuture2 小时前
C#数组详解:一维二维与交错数组
开发语言·windows·c#·visual studio·vision pro
程序 代码狂人2 小时前
CentOS7初始化配置操作
linux·运维·开发语言·php
从此不归路2 小时前
Qt5 进阶【13】桌面 Qt 项目架构设计:从 MVC/MVVM 到模块划分
开发语言·c++·qt·架构·mvc
zhangx1234_2 小时前
C语言 数据在内存中的存储
c语言·开发语言
星空露珠2 小时前
速算24点检测生成核心lua
开发语言·数据库·算法·游戏·lua
老蒋每日coding2 小时前
Python3基础练习题详解,从入门到熟练的 50 个实例(一)
开发语言·python