精华内容
下载资源
问答
  • 最近使用VS2008编写程序时,遇到了如何引用结构体数组作为函数形参问题。 现将主要代码粘贴如下(结果如图所示),来达到传递结构体数组函数中的目的: ////--main.cpp--///// #include "Point.h"#include#...

    最近使用VS2008编写程序时,遇到了如何引用结构体数组作为函数形参问题。

    现将主要代码粘贴如下(结果如图所示),来达到传递结构体数组到函数中的目的

    --main.cpp--/

    #include "Point.h"

    #include<iostream>

    #include<fstream> 

    using namespace std;

    typedef struct      //定义结构体

    {

       int num;

       float x;

       float y;

       float z;

    }Position;

    void PassData(Position (&P)[5]);//声明函数

    ///

    void ReadData(char*fname)//Read file's data

    {  

       Position PointN[5];

       for (int i=0;i<5;i++)//数组初始化

    {

    PointN[i].num=0;

    PointN[i].x=0;

    PointN[i].y=0;

    PointN[i].z=0;

    }

    fstream out;                                               

    out.open(fname,ios::in);

    while (!out.eof())

    {

    for (int i=0;i<5;i++)//从文档中读入数据至数组

    {

    out>>PointN[i].num;

    out>>PointN[i].x;

    out>>PointN[i].y;

    out>>PointN[i].z;

    }

    }

    out.close();

    PassData(PointN);//传递结构体数组数据到函数中显示

    }

    ///

    void PassData(Position (&P)[5])//Read file's data

     for(int i=0;i<5;i++)

    {

    cout<<P[i].num<<" "<<P[i].x<<" "<<P[i].y<<" "<<P[i].z<<endl;

    }

    }

    ///

    int main(int argc, char* argv[])                

    {

    ReadData("1.txt");

    system("Pause");return 0;

    }

    数据及运行结果如图:


    问题:为什么“引用”时需要限定数组大小?
    答案:
    如果参数是数组的引用,那么编译器不会将它转换为指针,而是直接传递数组本身,也就是说,数组的长度不可省略,编译器将检查传入函数的实际数组参数的长度和函数的形式参数的长度是否匹配。
    
    
    /*************************************初学C++,有不正之处还望赐教!****************************/

    参考:http://zhidao.baidu.com/link?url=eFwmfcjawrI_qjeYPp8qFABzZRi6V3s44SprAZJ5YyAhEi_SqAVHsoi9A2opJLoVOdVj_oo8tkK7LXm01HwwY_

    展开全文
  • 结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。 C++提供了许多种基本的...

    #include "stdio.h"

    struct abc{

    int a;

    int b;

    char *p;

    };

    struct abc myabc(void){

    struct abc n;

    n.a=2;

    n.b=3;

    n.p=(char *)0x00FF3304;

    return n;

    }

    void main(void)

    {

    struct abc x={1,2,(char *)0x00FF3300},y;

    y=myabc();

    printf("%d %d %p%d %d %p",x.a,x.b,x.p,y.a,y.b,y.p);

    }

    扩展资料:

    在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

    C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。C++允许用户根据需要自己声明一些类型,用户可以自己声明的类型还有结构体类型(structure)、共用体类型(union)、枚举类型(enumeration)、类类型(class )等,这些统称为用户自定义类型(user-defined type,UDT)。

    展开全文
  • C++中使用结构体数组作为函数参数

    千次阅读 2020-06-25 09:51:01
    在写C++的时候,当使用一个数组作为函数参数传入的时候,数组自动转化成指针变量。 int arr[] = {1,2,3}; //arr++; //这里错误 void printArr(arr[]) { arr++; //正确 } 因此在函数内部修改形参数组时,实参也会...

    在写C++的时候,当使用一个数组作为函数参数传入的时候,数组自动转化成指针变量。

    int arr[] = {1,2,3};
    //arr++; //这里错误
    
    void printArr(arr[])
    {
    	arr++; //正确
    }
    

    因此在函数内部修改形参数组时,实参也会发生改变

    展开全文
  • //函数的副本机制,是每个形式参数,都会新开辟一片内存新建一个变量,容纳传入过来的实际参数的值, //设计一函数改变num void change(int num)//函数没有改变成功, { num = 20; printf("changenum=%x\n",&num);...

    一:函数的副本机制

    总结:


    1:函数传参没有改变main函数里面的值

    //函数的副本机制,是每个形式参数,都会新开辟一片内存新建一个变量,容纳传入过来的实际参数的值,


    //设计一函数改变num
    void change(int num)//函数没有改变成功,
    {
    num = 20;
    printf("changenum=%x\n",&num);//不同的地址,不同的变量

    }
    void main()
    {
    int num = 10;
    printf("num=%d\n",num);
    printf("mainnum%p\n",&num);//不同的地址,不同的变量
    //num = 11;//赋值改变了num
    change(num);
    printf("num=%d\n",num);

    system("pause");
    }

    2:一定要改变main函数里面num的值,用地址



    //一定要改变main函数里面num的值,用地址

    /*需要传入num的地址,用什么类型的变量来容纳一个变量的地址,我们用什么样的方式
    来容纳一个变量的地址,我们用什么样的形式参数来接收一个变量的地址,其实是一个指针int *p,函数内部改变一个外部变量,需要传入地址,如何执行呢》新开辟一段内存,
    新建一个指针变量,容纳船渡过的的&num地址,副本机制仍然有效,int *p就是新建的变量。*/
    void change2(int *p)//传入地址,int *p=&num
    {
    *p = 20;//对*p进行赋值,根据地址取出内容进行赋值
    }
    void main()
    {
    int num = 10;
    printf("num=%d\n",num);
    printf("mainnum%p\n",&num);//不同的地址,不同的变量
    change2(&num);//传入地址

    printf("num=%d\n",num);

    system("pause");
    }


    3:地址调用也是通过副本机制


    void change2(int *p)//p是一副本,新建一个变量来容纳传递过的
    {
    *p = 20;//对*p进行赋值,根据地址取出内容进行赋值
    printf("change2 &p=%p\n",&p);//地址不一样,因为函数新建了一变量
    p = NULL;//赋值为空指针
    printf("change2 p=%p\n",p);
    }
    void main()
    {
    int num = 10;
    int *p = &num;//让一个指针存储num的地址
    printf("main num=%d\n",num);
    printf("main &num=%p\n",p);//不同的地址,不同的变量
    printf("main &p=%p\n", &p);
    change2(p);//传入num的地址
    printf("main p=%p\n",p);
    printf("num=%d\n",num);

    system("pause");
    }


    通过以上总结:


    二:函数的参数(结构体数组范例)没有看完

    1:结构体数组作为函数参数

    struct csdn
    {
    char user[40];
    char password[40];
    char email[40];


    };
    //如何写一函数对这个数组进行查找,第一个参数传递一个数组,第二个参数传递一个字符串,
    void find(struct csdn cdata[5],char *str)
    {


    }
    void main()
    {
    //创建一结构体数组并初始化,有5个元素
    struct csdn cdata[5] = { 
    {"huwei","198205","978920100@qq.com"},
    {"hu", "198205", "978930100@qq.com" },
    {"huw", "198209", "978940100@qq.com"},
    {"huwe", "198203", "978950100@qq.com"},
    {"huweio", "198204", "978960100@qq.com"},


    };
    //显示:
    for (int i = 0; i < 5;i++)
    {
    printf("%s %s %s\n",cdata[i].user,cdata[i].password,cdata[i].email);//打印结构体数据
    }



    system("pause");
    }


    展开全文
  • 7.8 指针、数组函数 **案例描述:**封装一个函数,利用冒泡排序,实现对整型数组的升序排序 例如数组:int arr[10] = { 4,3,6,9,1,2,10,8,7,5 }; 示例: //冒泡排序函数 void bubbleSort(int * arr, int len) //...
  • 1.不多说上代码 #include typedef enum { female,male }Sextype;...(我想学到结构体这个地方了,指针应该比较熟悉了吧,如果不理解为什么首地址加上长度可以表示数组的原因,可以搜索数组传入函数这个问题)
  • c函数传递结构体数组

    千次阅读 多人点赞 2019-08-23 16:35:25
    结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针。(结构体变量传递给函数与基本变量传递给函数类似...(结构体数组传递给函数与数组传...
  • C#调用C/C++动态库 封送结构体,结构体数组一.结构体的传递Cpp代码#define JNAAPI extern "C" __declspec(dllexport) // C方式导出函数typedef struct{int osVersion;int majorVersion;int minorVersion;int buildNum...
  • #include#include/*简化学生信息,只保留学号,姓名,成绩实现所有功能*///学生结构体typedef ...//由学生数组和学生数目组成的组的结构体typedef struct {Stu stus[100];//默认一个组最多有100个学生int count;}Group...
  •  这里的难点就在处理回调函数结构体数组参数,参数是从dll传出来的,java里面用指针接收,而获取结构体内部的每个值就需要用读内存的方式读取出来,这里就需要对结构体在内存中的存储方式比较了解才行,因为read...
  • 话不多说,上代码 函数调用数组  #include void main() { void f1(int a); void f2(int x[]);... int a[10] = { 0,1,2,3,4,5,6...//函数调用数组数组名存的就是数组首地址) } void f1(int a)//就像调用一个变量一
  • 文章目录一、结构体变量二、用结构体数组处理学生成绩三、结构体类型函数求平均值 用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上和求平均...
  • 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct student{ 5 int num; 6 char str[20]; 7 double dec; 8 }; 9 ...10 void scan(struct student stu[], int...
  • 要求: ...pid=3 说明: 感觉函数还可以改改,弄成传入参数之类的 代码: #include <stdio.h> #include <string.h> struct student{ int num; char name[20]; int lesson1; int les...
  • 结构体数组

    千次阅读 2009-03-22 11:48:00
    结构体数组定义 TAG:结构体,结构体数组,结构体数组定义TEXT:数组是一组具有相同数据类型变量的有序集合,可以通过下标获得其中的任意元素。结构体类型数组与基本类型数组的定义与引用规则是相同的,区别在于结构体...
  • 请问结构体数组怎样传递参数? 请问结构体数组怎样传递参数?问结构体数组怎样传递参数?例如有结构体: struct _pro_ { char m[20]; char *n; }; 定义结构体数组如下: struct _pro_ problem[][]...
  • 结构体数组 结构体数组属于结构体中的内容,将定义好的结构体存放在一个数组当中方便我们对多个结构相同的结构体进行操作。 定义结构体数组 结构体数组的定义方法与普通数组定义方法类似(前提是已经定义好结构体...
  • 然后我要在数据库里查询到这些数据,传入结构体数组,数组数目不确定,再调用那个函数。请问我应该怎么来实现。我是这样写的 tagInfoInitMarket *m_pInfoinit; while(pdb->more()) //遍历查询出来的数据 { m_...
  • C#调用C++DLL传递结构体数组的终极解决方案 在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了。但是当传递的是结构体、结构体数组或者结构体指针的时候,...
  • 对于结构体数组,前些天有个同事说链表真好用,他的关注点是插入排序(用于对蓝牙设备顺序存入,然后将新的蓝牙设备按照接收灵敏度插入到链表中,既完成了存入,又完成了排序)。因为他是第一次用链表,表述成了链表...
  • jni返回结构体数组

    千次阅读 2018-08-29 18:00:36
    jni返回结构体数组.这个卡了我两天.好郁闷.从网上找了好多的办法都不成功. 可能是人品问题,呵呵呵 好在现在搞定了.把源码贴出来让大家也看看,希望能帮到那些和我人品不好的人嘿嘿.. 其实回想起来.挺简单的. 返回...
  • 下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • C#调用C/C++动态库 封送结构体,结构体数组 一.结构体的传递 Cpp代码 #define JNAAPI extern "C" __declspec(dllexport) // C方式导出函数 typedef struct { int osVersion; int majorVersion; int minorVersion...
  • 用模拟的qsort进行解释结构体数组的排序 typedef struct Stu{ char name[100]; char sex[10]; }stu; void Swap(void *_x, void *_y,int size) { char *x = (char *)_x; char *y = (char *)_y; char temp = 0; ...
  • 有一组学生数据,每个数据中含有三门课成绩,请按成绩总和从高到低对这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低对... 函数sort对p指针所指的结构体数组的学生数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,402
精华内容 13,360
关键字:

结构体数组传入函数