這裡蒐索程式師資訊,查找有用的技術資料
当前位置:首页 » 文件传输 » 可变数组数据访问
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

可变数组数据访问

发布时间: 2022-10-10 18:50:29

❶ 如何通过变量索引实现数组访问

下面的语法用于命名为"Quantities"的数组元素的索引寻址,"Quantities"数组在数据块"Data_DB"中进行声明:

•"Data_DB". Quantities ["i"] (一维数组)

•"Data_DB". Quantities ["i"] (一维结构体数组)

•"Data_DB". Quantities ["i", "j"] (多维数组)

•"Data_DB". Quantities ["i", "j"].a (多维结构体数组)

组成部分 描述

Data_DB 用于存储数组变量的数据块的名称

Quantities 数组类型的变量

i , j PLC用于指针的整数形变量

a 结构体其他的可变变量

图.01 中展示了对位于数据块中的数组元素进行寻址的程序代码。在此把SIMATIC S7-1200/S7-1500和 S7-300/400做了个比较。在SIMATIC S7-300/400控制器中数组变量的起始地址必须已知,并且在使用地址寄存器时索引寻址也必须完成。

❷ java如何批量往可变数组中填入数据

可变数组是指集合么,一般集合提供有addAll,putAll方法

❸ 如何建立一个大小不定,可变的数组

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>

/*主程序
大小不定,可变的数组,可以通过将指针指向动态分配的内存来实现功能.
程序功能:输入数组长度,分配内存空间,利用随机数生成数组元素并输出*/
intmain(){
inti,n;
int*p;//指针,下面用来指向动态分配空间

srand((unsigned)time(NULL));//初始化随机数种子
printf("numberofarrayelements: ");
while(scanf("%d",&n)!=NULL){//输入长度n,ctrl+z结束循环
p=(int*)malloc(sizeof(int)*n);//分配空间

for(i=0;i!=n;++i){
*(p+i)=rand()%100;//生成100以内随整数
printf("%2d",p[i]);//访问p
}
printf(" ");
}
return0;
}

❹ 如何做出一个C++可变长数组,请各位帮忙

查看vector源码,照抄并简化一下!抄一下MFC的CArray也不错!只要一个指针和一个指示大小的整型就可以了,其他都是锦上添花而已
C++怎么又变成C了。
这么好像很复杂,其实很简单的。
1)需要一个T类型的指针,动态分配内存,需要一个整数记录数组大小
2)一个缺省构造函数
vector();// 无成员,或者任意常量个成员
和一个单参构造函数
vector(int n); //n 个成员
3)添加成员,需要动态改变分配的内存大小。
改变成员数量的函数:
void resize( int n);

添加成员的函数:
void push_back(const T&t);
4)查找指定成员,逐一查找;const int find(const T& t);
查找固定位置的成员----实现 constr T& operator[](int n)const;
5)索引方式访问 实现
下标运算符[] 重载,即
constr T& operator[](int n)const;和
T& operator[](int n);
6)同类型对象赋值,实现
复制构造函数
vector(vector &v);
和 赋值运算符重载
vector operator=(const vector &v
);
7)获取数组当前长度
int size()const ;
不是很复杂呀!

❺ 主程序中未分配的可变数组,如何在子程序中调用

具体方法:
选择菜单命令工具(T) > 指令向导叁?缓笱≡?NETR/NETW;
1 指定您需要的网络操作数目
2 指定端口号和子程序名称
3 指定网络操作
4 分配 V 存储区
5 生成代码
为了便于进行连接在网络中的 PLC 之间的数据交换,S7-200支持网络读(NETR)和网络写(NETW)指令。NETR 指令从远程 PLC中的指定地址读取配置好的一定数量的数据。NETW 指令向远程PLC中的指定地址写入配置好的一定数量的数据。NETR
和 NETW 指令操作由数据表中的前七个字节控制。表中的一个数值是读取/写入数据长度,可以规定 1 至 16 个字节。因此数据表最大可达 23 个字节。

注释:在使用 HSC 向导之前,程序必须被编译,且处于符号编址模式。如果您尚未编译程序,向导在 HSC 配置过程开始时会提示您编译程序。
向导将向您询问初始化选项,然后为指定配置生成程序代码和数据块代码。从第一个屏幕选择NETR/NETW后,向导向您询问下列信息:

步骤 1 指定您需要的网络操作数目

注释:如果项目包含使用 STEP 7 Micro/WIN 3.2 版建立的现有 NETR/ NETW 配置,您必须在继续执行步骤 1 之前选择编辑其中一个现有配置或建立一个新配置。

可使用 NETR/NETW 指令向导,简化网络操作配置。向导将向您询问初始化选项,并根据您的选择生成完整的配置。向导允许您配置多达 24 项独立的网络操作,并生成代码协调这些操作。

步骤 2 指定端口号和子程序名称

注释:项目可能已经包含一个 NETR/NETW 向导配置。所有以前建立的配置均被自动载入向导。向导会提示您完成以下两个步骤之一:

?选择编辑现有配置,方法是点击“下一步>”。

?选择从项目中删除现有配置,方法是选择“删除”复选框,并点击“完成”。

如果不存在以前的配置,向导会询问以下信息:

1. PLC 必须被设为 PPI 主站模式才能进行通信。您要指定通信将通过哪一个 PLC 端口进行。

2. 向导建立一个用于执行具体网络操作的参数化子程序。向导还为子程序指定一个默认名称。您可以编辑默认名称。

步骤 3 指定网络操作

对于每项网络操作,您需要提供下列信息:

1. 指定操作是 NETR 还是 NETW。

2. 指定从远程 PLC(NETR)读取的数据字节数或向远程 PLC(NETW)写入的数据字节数。

3. 指定您希望用于通信的远程 PLC 网络地址。

4. 如果您在配置NETR,指定以下内容:

- 数据存储在本地 PLC 中的位置。有效操作数:VB、IB、QB、MB、LB。
- 从远程 PLC 读取数据的位置。有效操作数:VB、IB、QB、MB、LB。

5. 如果您在配置 NETW,指定以下内容:

- 数据存储在本地 PLC 中的位置。有效操作数:VB、IB、QB、MB、LB。

- 向远程 PLC 写入数据的位置。有效操作数:VB、IB、QB、MB、LB。

步骤 4 分配 V 存储区

对于您配置的每一项网络操作,要求有 12 个字节的 V 存储区。您指定可放置配置的 V 存储区起始地址。向导会自动为您建议一个地址,但您可以编辑该地址。请注意,如果您使用重叠地址,向导在显示一则警告后,允许您进入下一步。

注释: 在 NETR 操作中,请确认将用于存储数据的变量地址没有与分配给向导配置的存储区地址重叠。

步骤 5 生成程序代码

回答这些询问后,点击“完成”,S7-200 指令向导将为您指定的网络操作生成代码。由向导建立的子程序成为项目的一部分。要在程序中使能网络通信,需要在主程序块中调用执行子程序(NET_EXE)。每次扫描周期时,使用 SM0.0 调用该子程序。这样会启动配置网络操作执行。为每项网络操作建立的数据处理子程序会在适当时间被自动调用。

❻ 在西门子中如何通过变量索引实现数组访问

下面的语法用于命名为"Quantities"的数组元素的索引寻址,"Quantities"数组在数据块"Data_DB"中进行声明:

•"Data_DB". Quantities ["i"] (一维数组)

•"Data_DB". Quantities ["i"] (一维结构体数组)

•"Data_DB". Quantities ["i", "j"] (多维数组)

•"Data_DB". Quantities ["i", "j"].a (多维结构体数组)

组成部分 描述

Data_DB 用于存储数组变量的数据块的名称

Quantities 数组类型的变量

i , j PLC用于指针的整数形变量

a 结构体其他的可变变量

图.01 中展示了对位于数据块中的数组元素进行寻址的程序代码。在此把SIMATIC S7-1200/S7-1500和 S7-300/400做了个比较。在SIMATIC S7-300/400控制器中数组变量的起始地址必须已知,并且在使用地址寄存器时索引寻址也必须完成。

❼ 30分求救 谁能详细的讲一下c#的可变数组用法

.net 2.0中微软推荐使用的可变数组类型为List<T>。

表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。

命名空间: System.Collections.Generic
程序集: mscorlib(在 mscorlib.dll 中)

语法
Visual Basic(声明)
<SerializableAttribute> _
Public Class List(Of T) _
Implements IList(Of T), ICollection(Of T), _
IEnumerable(Of T), IList, ICollection, IEnumerable
Visual Basic (用法)
Dim instance As List(Of T)
C#
[SerializableAttribute]
public class List<T> : IList<T>, ICollection<T>,
IEnumerable<T>, IList, ICollection, IEnumerable
Visual C++
[SerializableAttribute]
generic<typename T>
public ref class List : IList<T>, ICollection<T>,
IEnumerable<T>, IList, ICollection, IEnumerable
J#
J# 支持使用泛型 API,但是不支持新泛型 API 的声明。
JScript
JScript 不支持泛型类型或方法。
类型参数
T
列表中元素的类型。

备注
List(T) 类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList(T) 泛型接口。

List(T) 类既使用相等比较器又使用排序比较器。

诸如 Contains、IndexOf、LastIndexOf 和 Remove 这样的方法对列表元素使用相等比较器。类型 T 的默认相等比较器按如下方式确定。如果类型 T 实现 IEquatable(T) 泛型接口,则相等比较器为该接口的 Equals(T) 方法;否则,默认相等比较器为 Object.Equals(Object)。

诸如 BinarySearch 和 Sort 这样的方法对列表元素使用排序比较器。类型 T 的默认比较器按如下方式确定。如果类型 T 实现 IComparable(T) 泛型接口,则默认比较器为该接口的 CompareTo(T) 方法;否则,如果类型 T 实现非泛型 IComparable 接口,则默认比较器为该接口的 CompareTo(Object) 方法。如果类型 T 没有实现其中任一个接口,则不存在默认比较器,并且必须显式提供比较器或比较委托。

List(T) 不保证是排序的。在执行要求 List(T) 已排序的操作(例如 BinarySearch)之前,您必须对 List(T) 进行排序。

可使用一个整数索引访问此集合中的元素。此集合中的索引从零开始。

List(T) 接受 null 引用(在 Visual Basic 中为 Nothing) 作为引用类型的有效值并且允许有重复的元素。

性能注意事项
在决定使用 List(T) 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List(T) 类在大多数情况下执行得更好并且是类型安全的。如果对 List(T) 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。

如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List(T) 类的实现。这意味着不必对 List(T) 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。

确保用于类型 T 的值类型实现 IEquatable(T) 泛型接口。如果未实现,则诸如 Contains 这样的方法必须调用 Object.Equals(Object) 方法,后者对受影响的列表元素进行装箱。如果值类型实现 IComparable 接口,并且您拥有源代码,则还应实现 IComparable(T) 泛型接口以防止 BinarySearch 和 Sort 方法对列表元素进行装箱。如果您不拥有源代码,则将一个 IComparer(T) 对象传递给 BinarySearch 和 Sort 方法。

使用 List(T) 类的特定于类型的实现,而不是使用 ArrayList 类或自己编写强类型包装集合,这样是很有好处的。原因是您的实现必须做 .NET Framework 已经为您完成的工作,并且公共语言运行时能够共享 Microsoft 中间语言代码和元素据,这是您的实现所无法做到的。

示例
下面的代码示例演示 List(T) 泛型类的几个属性和方法。该代码示例使用默认构造函数创建具有默认容量的字符串行表。随后显示 Capacity 属性,然后使用 Add 方法添加若干项。添加的项被列出,Capacity 属性会同 Count 属性一起再次显示,指示已根据需要增加了容量。

该示例使用 Contains 方法测试该列表中是否存在某个项,使用 Insert 方法在列表的中间插入一个新项,然后再次显示列表的内容。

默认的 Item 属性(C# 中的索引器)用于检索项,Remove 方法用于移除前面添加的重复项的第一个实例,然后,该示例再次显示内容。Remove 方法总是移除它所遇到的第一个实例。

该示例使用 TrimExcess 方法减小容量以匹配计数,然后显示 Capacity 和 Count 属性。如果未用容量已经小于总容量的 10%,则列表容量不会进行调整。

最后,代码示例使用 Clear 方法移除列表中的所有项,并显示 Capacity 和 Count 属性。

Visual Basic
Imports System
Imports System.Collections.Generic

Public Class Example

Public Shared Sub Main()

Dim dinosaurs As New List(Of String)

Console.WriteLine(vbLf & "Capacity: {0}", dinosaurs.Capacity)

dinosaurs.Add("Tyrannosaurus")
dinosaurs.Add("Amargasaurus")
dinosaurs.Add("Mamenchisaurus")
dinosaurs.Add("Deinonychus")
dinosaurs.Add("Compsognathus")

Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next

Console.WriteLine(vbLf & "Capacity: {0}", dinosaurs.Capacity)
Console.WriteLine("Count: {0}", dinosaurs.Count)

Console.WriteLine(vbLf & "Contains(""Deinonychus""): {0}", _
dinosaurs.Contains("Deinonychus"))

Console.WriteLine(vbLf & "Insert(2, ""Compsognathus"")")
dinosaurs.Insert(2, "Compsognathus")

Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next

Console.WriteLine(vbLf & "dinosaurs(3): {0}", dinosaurs(3))

Console.WriteLine(vbLf & "Remove(""Compsognathus"")")
dinosaurs.Remove("Compsognathus")

Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next

dinosaurs.TrimExcess()
Console.WriteLine(vbLf & "TrimExcess()")
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity)
Console.WriteLine("Count: {0}", dinosaurs.Count)

dinosaurs.Clear()
Console.WriteLine(vbLf & "Clear()")
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity)
Console.WriteLine("Count: {0}", dinosaurs.Count)
End Sub
End Class

' This code example proces the following output:
'
'Capacity: 0
'
'Tyrannosaurus
'Amargasaurus
'Mamenchisaurus
'Deinonychus
'Compsognathus
'
'Capacity: 8
'Count: 5
'
'Contains("Deinonychus"): True
'
'Insert(2, "Compsognathus")
'
'Tyrannosaurus
'Amargasaurus
'Compsognathus
'Mamenchisaurus
'Deinonychus
'Compsognathus
'
'dinosaurs(3): Mamenchisaurus
'
'Remove("Compsognathus")
'
'Tyrannosaurus
'Amargasaurus
'Mamenchisaurus
'Deinonychus
'Compsognathus
'
'TrimExcess()
'Capacity: 5
'Count: 5
'
'Clear()
'Capacity: 5
'Count: 0

C#
using System;
using System.Collections.Generic;

public class Example
{
public static void Main()
{
List<string> dinosaurs = new List<string>();

Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Mamenchisaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");

Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}

Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
Console.WriteLine("Count: {0}", dinosaurs.Count);

Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
dinosaurs.Contains("Deinonychus"));

Console.WriteLine("\nInsert(2, \"Compsognathus\")");
dinosaurs.Insert(2, "Compsognathus");

Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}

Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);

Console.WriteLine("\nRemove(\"Compsognathus\")");
dinosaurs.Remove("Compsognathus");

Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}

dinosaurs.TrimExcess();
Console.WriteLine("\nTrimExcess()");
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
Console.WriteLine("Count: {0}", dinosaurs.Count);

dinosaurs.Clear();
Console.WriteLine("\nClear()");
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
Console.WriteLine("Count: {0}", dinosaurs.Count);
}
}

/* This code example proces the following output:

Capacity: 0

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

Capacity: 8
Count: 5

Contains("Deinonychus"): True

Insert(2, "Compsognathus")

Tyrannosaurus
Amargasaurus
Compsognathus
Mamenchisaurus
Deinonychus
Compsognathus

dinosaurs[3]: Mamenchisaurus

Remove("Compsognathus")

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

TrimExcess()
Capacity: 5
Count: 5

Clear()
Capacity: 5
Count: 0
*/

❽ OC可变数组中如何修改其中一个对象中得一个字段

您好,如果您想得到可变数组的某个元素,有以下两种方法

  1. 您知道您需要的元素在数组中的位置,那么您可以直接通过数组名[索引]的方式来直接访问并赋值即可

  2. 如果您不知道元素在数组中的位置,而只知道元素的对象内容的话,您可以遍历数组并使用一个条件判断语句(如果当前元素的内容与您需要的元素内容相同),只需要直接替换该元素即可

❾ 怎么访问数组中的数据

使用for循环语句+文件操作函数即可文件中数据读取并存到数组中。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的C语言教程都有文件操作一章,可以找本教材进一步学习。
2、例程:
#include<stdio.h>
int i,a[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a
for(;i--;)fscanf(fp2,"%d ",a[i]);//把数组a逆序写入到输出文件当中
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}

❿ C语言 可变长数组

我就不看你的bubble sort的算法部分了,直接跟你讲你不知道错误的原因。

你第一种写法:
int n=1, a[n], i=0, j=0, k=0;
这里你已经定义n = 1, 而a[n]也在该行定义。
那么编译器在此就直接给a这个数列分配内存了。
也就是说你a这个数组大小就确定了,即为1。
我不知道你学了内存分配没有,简单给你讲解一下,
具体你可以在网上搜。
比如一个含有5个整数类型的数组可以这样定义a[5],
但是也可以这样获得:int *a = (int *) malloc ( sizeof( int ) * 5 );
也就是说我们给一个指针分配了内存,从而得到一个数组,
而a[5]这样定义也是需要编译器在编译程序的时候分配内存的
而编译器会根据你的代码优化你的程序,并把代码转化为汇编再者machine code

说多了,继续给你分析
你修改过的代码
int n=1, i=0, j=0, k=0;
printf("请输入数组长度:");
scanf("%d", &n);
int a[n]; //修改

这个时候由于你在声明数组之前就已经读入n了,
所以a这个时候才是根据你输入的数字所得大小的数组。

这样你懂我的意思了吗?