精华内容
下载资源
问答
  • 下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • C 语言结构体数组指针以及函数

    千次阅读 2019-01-23 21:19:48
    结构体数组指针 指针变量可以指向一个结构体数组,这时指针变量的值是整个数组的首地址。 设 ps 为指向结构体数组的指针变量,则 ps 也指向该结构体数组的第 0个元素,ps+1 指向第一个元素,ps+i 则指向第 i 元素,...

    结构体数组指针
    指针变量可以指向一个结构体数组,这时指针变量的值是整个数组的首地址。
    设 ps 为指向结构体数组的指针变量,则 ps 也指向该结构体数组的第 0个元素,ps+1
    指向第一个元素,ps+i 则指向第 i 元素,这与普通数组的情况是一样的。
    【示例】用指针变量输出结构体数组。

     #include <stdio.h>
    
    struct stu{
    		 int num;
    		 char *name;
    		 char sex;
    		 float score;
    		 } *ps, boy[5]={
    					{101, "Zhou ping", 'M', 45},
    				    {102, "Zhang ping", 'M', 62.5},
    				    {103, "Liou fang", 'F', 92.5},
    				    {104, "Cheng ling", 'F', 87},
    				    {105, "Wang ming", 'M', 58}
    		};
    
    int main(){
    			 printf("No\tName\t\tSex\tScore\t\n");
    			 for(ps=boy; ps<boy+5; ps++)
    			 printf("%d\t%s\t%c\t%f\t\n", ps->num, ps->name, ps->sex,
    			 ps->score);
    
    		    return 0;
    }
    运行结果:
    No     Name    Sex Score
    101 Zhou ping   M 45.000000
    102 Zhang ping  M 62.500000
    103 Liou fang   F 92.500000
    104 Cheng ling  F 87.000000
    105 Wang ming   M 58.000000
    

    应该注意的是,一个结构体指针变量虽然可以用来访问结构体变量或结构体数组元素的
    成员,但是,不能使它指向一个成员。也就是说不允许取一个成员的地址来赋予它。所以,
    下面的赋值是错误的:
    ps=&boy[1].sex;
    而只能是:
    ps=boy; // 赋予数组首地址
    或者是:
    ps=&boy[0]; //赋予 0 号元素首地址
    结构体指针变量作函数参数
    结构体变量代表的是结构体本身这个整体,而不是首地址,作为函数参数时传递的整个
    结构体,也就是所有成员。如果结构体成员较多,尤其是成员为数组时,传送的时间和空间
    开销会很大,严重降低程序的效率。所以最好的办法就是使用指针,也就是用指针变量作为
    函数参数。这时由实参传向形参的只是地址,非常快速。

    【示例】计算一组学生的平均成绩和不及格人数。

     #include <stdio.h>
    
    #define STU struct stu
     STU{
    	 int num;
    	 char *name;
    	 char sex;
    	 float score;
    	 }boy[5]={
    	 {101,"Li ping",'M',45},
    	 {102,"Zhang ping",'M',62.5},
    	 {103,"He fang",'F',92.5},
    	 {104,"Cheng ling",'F',87},
    	 {105,"Wang ming",'M',58}
    };
    
    void average(STU *ps);
    
    	 int main(){
    	 STU *ps = boy;
    	 average(ps);
    	 return 0;
    }
    
    void average(struct stu *ps){
    	 int flunk=0, i;
    	 float sum=0;
    		 for(i=0; i<5; i++,ps++){
    				 sum += ps->score;
    				 if(ps->score < 60) flunk += 1;
    		 }
    	 printf("sum=%.2f, average=%.2f, flunk=%d\n", sum, sum/5, flunk);
    }
    运行结果:
    sum=345.00, average=69.00, flunk=2
    

    在这里插入图片描述

    展开全文
  • Delphi结构体数组指针的问题 //这段代码在Delphi 2007和delphi 7下是可以执行的,所以正确使用结构体数组和指针应该是这样的,已验证 unit Unit1; interface uses Windows, Messages...
    //这段代码在Delphi 2007和delphi 7下是可以执行的,所以正确使用结构体数组和指针应该是这样的,已验证
    
    unit
    Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); type TMyType = record S: String; I: Integer; end; TMyArray = array of TMyType; PMyArray = ^TMyArray; var MyArray: PMyArray; i:integer; AList:TStrings; begin try new(MyArray); AList:=TStringList.Create; SetLength(MyArray^, 50000); for i:=0 to 49999 do begin MyArray^[i].S :='中山'+inttostr(i); myArray^[i].I :=i; AList.Add(MyArray^[i].S+',年龄为:'+inttostr(MyArray^[i].I)); end; self.Memo1.Lines:=Alist; finally SetLength(MyArray^, 0); Dispose(MyArray); end; end; end.

    这段代码在Delphi 2007和delphi 7下是可以执行的,所以正确使用结构体数组和指针应该是这样的,已验证。

     

    posted on 2013-08-28 11:54 向北方 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/China3S/p/3286875.html

    展开全文
  • //用结构体数组指针完成:有三个学生信息,存放在结构体数组中,要求输出全部信息 #include struct Stu { int num; char name[20]; char sex; int age; }; int main() { struct Stu student[3]={{317,"han",'m'...
    //用结构体数组指针完成:有三个学生信息,存放在结构体数组中,要求输出全部信息
    #include <stdio.h>
    struct Stu
    {
    	int num;
    	char name[20];
    	char sex;
    	int age;
    };
    int main()
    {	struct Stu student[3]={{317,"han",'m',20},{318,"hun",'w',22},{311,"dan",'w',18}};
    	struct Stu *p;
    	printf("  num  name sex age\n");
    	for(p=student;p<student+3;p++)
    	{
    		printf("%5d  %s  %c   %d\n",p->num,p->name,p->sex,p->age);
    	}
    	return 0;
    }

    展开全文
  • 结构体数组指针

    2010-01-31 15:39:00
    以前从没想到C++还有这么个写法。虽然脑子里想到过这种结构,不过没实际用,所以也没去具体想代码怎么写。今天突然要写了才去搜了下。很怪异的,以前没见过。example: #include "stdafx.h" ...

    以前从没想到C++还有这么个写法。虽然脑子里想到过这种结构,不过没实际用,所以也没去具体想代码怎么写。今天突然要写了才去搜了下。很怪异的,以前没见过。example:

    #include "stdafx.h"
    
    struct exp1{
      DWORD UnKNOW1;
      DWORD xx1;
      DWORD xx2;
      DWORD UnKNOW2;
    };
    int _tmain(int argc, _TCHAR* argv[])
    {
      exp1 shili1[11];
      FillMemory(shili1,11*sizeof(exp1),1);
      exp1 (*shili2)[11];shili2=&shili1;
      return 0;
    }


    定义方法就是exp1 (*shili2)[11];


    还从没看到过这种写法呢,真是孤陋寡闻了

    展开全文
  • 一:结构体指针 指向结构体变量的指针,称为结构体指针 Stu stu1={0}; Stu *p=&stu1; 这里Stu*:表示结构体指针类型(类型) p:表示结构体指针变量(变量名) &stu1:表示结构体变量地址...二:结构体数组指针的关系
  • C语言结构体数组指针的动态分配

    千次阅读 2020-03-03 23:44:28
    刚开始,由于485设备的种类并不是很多,而且主机的每个485口下挂的设备数目,也不是很多,因此采用了静态结构体数组的方式来做设备属性和数值的缓存(Shadow)。但是目前485种类是越来越多,而且规定每个485口下,...
  • #include<stdio.h> #define num 3 struct date { int day; int month; int year; }; void input(struct date*); void output(struct date*); int main() { struct date times[num];... i...
  • struct A里的成员是结构体指针而b_arry和c_arry是结构体数组的地址。 2. 结构体经过以下传递会不会造成数据的混乱? 比如有一个函数void func (void *arg); 往函数里面传参,如func (&a); (a按照问题1里进行了...
  • 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子: struct stu{ char name[]; //姓...
  • 如题,我已经能传基本数据结构数组的指针了,但是复杂结构体的操作起来是不一样的,...//n数组长度,obj数组指针 java中这样弄 Obj.ByReference ob=new Obj.ByReference(); Obj[] oc=(Obj[])ob.toArray(2);//这样o
  • 尝试在这个结构数组上使用qsort,我得到了奇怪的结果....我从文件构造一个access_data指针数组,使它们按到达时间排序,但我需要稍后按扇区对它们进行排序,所以我有以下内容:int compare_data(const void* ...
  • C语言--结构体数组和结构体指针

    万次阅读 多人点赞 2018-08-16 21:06:49
    1.结构体数组 具有相同结构体类型的变量构成的数组,称为结构体数组。与普通数值型数组的不同之处在于每个数组元素都是一个结构体变量,它们都分别包含各个成员项。 定义结构体数组一般形式是 struct 结构体名 { ...
  • C语言 结构体
  • 结构体数组指针memset

    千次阅读 2016-01-15 10:59:57
    今天是用到了结构体指针,感觉自己真的是弱爆了,应该会有很多像我一样的菜鸟,会出现这样的错我, 错误的代码是 strArry* GrientArr;  memset(GrientArr,0,sizeof(strArry)); 然后就会出现错误 之所以...
  • 1 结构体指针 结构体指针也和正常的指针是一样的使用,只是多了一种调用方法 point m={1,0},n={4,0}; point *p_m ,*p_n;point是一个结构体,调用的时候先声明一个对应类型的指针变量,然后再像正常的指针调用即可...
  • C语言结构体数组+结构体类型指针+指向结构体数组指针+typedef类型结构体数组两种结构体数组的定义形式用sizeof运算符求结构体数组所占字节数结构体类型指针指向结构体数组指针typedef类型 结构体数组 如果要处理...
  • 结构体数组和结构体指针

    千次阅读 2016-10-31 11:47:43
    结构体数组和结构体指针(或结构体数组指针) */ struct Stu{ int age; char sex; char str[10]; //结构体数组的定义与初始化 }stu_arr[2]={{10,20,"haha"},{30,40,"niha0"}}; /** 打印结构体信息 */ int ...
  • mfc结构体指针、结构体数组指针

    千次阅读 2014-12-14 22:20:34
    // 结构体数组指针  1 #include  2 #include  3  4 struct student{  5 long num;  6 char name[20];  7 }stu[3]={102,"yuan",103,"hui",104,"nihao"};  8  9 int main()  ...
  • 1.用指针 #include #include ... 指针指向的是数组的第一个地址。 每个地址由两部分组成:名字和分数。各占4个字节。每个地址占8个字节。 定义指针: 1.int a =10; 2.int *p; 3.p = &a; 或者 1.int a =10; 2.int *p=&a;
  • 结构体数组指针的使用

    千次阅读 2016-12-03 21:44:11
     //求数组长度  int len = sizeof(stus) / sizeof(struct stu);  printf("Name\t\tNum\tAge\tGroup\tScore\t\n");  for(ps=stus; ps; ps++) {  printf("%s\t%d\t%d\t%c\t%.1f\n", ps->name, ps->num...
  • 结构体数组指针

    2015-01-26 20:11:57
    #include "stdio.h" #include "stdlib.h" typedef struct { int id; int eng; int math;...结构体指针变量不是要用->符号来处理吗?为什么用->符号会报错,用“.”符号确能编译运行?
  • 在工作过程中会遇到结构体,可能会忘记如何遍历结构体数组,这是一个简单的例子: void structArrayPtr() { // 定义一个结构体数组 struct Student studentArray[2] = { {"William", 18}, {"Mark", 20} }; ...
  • 关于结构体数组指针的使用,参见C语言结构体数组指针以及函数; 其实当成一般的整形数组处理就好,因为C把你的自定义的结构体类型当成了元类型,你的结构体指针p进行自增操作p++,和整形数组自增操作一样,指针位置会...
  • 指向结构体数组指针

    千次阅读 2019-05-31 06:52:50
    如果定义一个结构体指针变量并把结构体数组的数组名付给这个指针变量的话,就意味着将结构体数组的第一个元素的地址,即第一个结构体变量的地址,也即第一个结构体变量中成员的地址付给这个指针变量。 #include<...
  • 一、结构体、结构体数组、结构体指针的定义和初始化

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,727
精华内容 2,690
关键字:

结构体数组指针