精华内容
下载资源
问答
  • typedef struct Test{ int id; string name;... // 用以不初始化就构造结构体 Test(){} ; //只初始化id Test(string _name) { name = _name; } //同时初始化id,name Test(inr _id,string _nam...
    typedef struct Test{
        int id;
        string name;
        // 用以不初始化就构造结构体
        Test(){} ;
        //只初始化id
        Test(string _name) {
            name = _name;
        }
        //同时初始化id,name 
        Test(inr _id,string _name): id(_id),name(_name)}{};
    };
    #include<iostream>
    #include<string>
    
    using namespace std;
    
    typedef struct Test{
        int id;
        int name;
        // 用以不初始化就构造结构体
        Test(){} ;
        //只初始化id
        Test(int _name) {
            name = _name;
        }
        //同时初始化id,name 
        Test(int _id,int _name): id(_id),name(_name){};
    }Test; 
    
    Test test[10];
    int main(){
        int a,b,num,i;
        for(a=1,b=1,num=0;b<=10;a++,b++,num++){
            test[num] = Test(a,b);
        }
        for(i=0; i<10;i++)
            cout<<test[i].id<<" "<<test[i].name<<endl;
        return 0;
    }

     

     

     

     

     



    1.首先你要知道node这个结构体是你自己定义的,计算机并不知道它怎么去创建变量,所以要你写一个构造函数让计算机明白怎么样去创建(如果不创建的话,系统会创建一个默认的构造函数).

    2.比如这里的node(const int a=0,const int g= 0):a(a)g(g){} 这个构造函数,就告诉了计算机,你可以这样创建 : node tmp(1,2);

    3.关于运算符重载,因为这个node类型是你自己定义的,计算机并不知道<是根据什么来比较大小的,如果你要这样用
    node a,b;
    a<b;
    就得让计算机知道当 <左右两边是node类型的值的时候,是根据什么逻辑来返回值的,比如 1<3这个是根据实数的大小来返回真假。

    4.可能运算符重载这样的写法你看不懂,一般双目运算符有两种写法:
    bool operator <(const node &num1){}
    bool operator <(const node &num1,const node num2){}
    前者是默认 本身是 '<'左边的项,num1是'<'右边的项。形如 this < num1
    后者是num1 是'<'左边的项,num2是'<'右边的项。形如 num1 < num2

    node v= node(a[i],g[i]);
    就相当于:
    node tmp(a[i],g[i]);
    node v = tmp;

     


     

    第一种

    struct D
    {
        double len;
        int head,tail;
        D(int a=0,int b=0,double l=0)
        {
            head=a;  tail=b;
            len=l;
        }
    };

    第二种

    struct D
    {
        double len;
        int head,tail;
        D(int a,int b,double l)
        {
            head=a;  tail=b;
            len=l;
        }
    };

    第二种 在申请变量时 容易出问题 这个变量一出生就要知道 内部元素的具体值。

    比如

    D mid;

    mid.head=1;

    这时第一种 已经初始化 D(int a=0,int b=0,double l=0)  所以没有问题

    第二种 没有初始化,并且 一申请出这个 mid 变量就要给它赋值的

    可以这样 D mid = (原来有的 D类型的变量) 或者用构造函数。

    #include<bits/stdc++.h>
    using namespace std;
    struct D
    {
        int head,tail;
        double len;
        D(int a,int b,int l)
        {
            head=a;tail=b;len=l;
            cout<<head<<tail<<len<<endl;
        }
    };
    int main()
    {
        int n;
        D mid=D(1,2,3);
    
        return 0;
    }
    

    如果要放到容器里,自己先规定怎么排序啊 

    而且 这里只有一个变量   const node & a

    在写sort 的cmp 的时候  会有两个变量,

    不知道为什么 ,,先记住了

    下面的 bool operator < (const node & a) const   

    第一个const  是保证 a 不发生改变,  第二个是保证 函数不发生改变

    
    struct node
    {
        int x,y;
        bool operator < (const node & a) const
        {
            return x>a.x;
        }
    }k;

     

     

     

     

    展开全文
  • c语言中结构体类型变量类型,结构体变量赋值 这几天看图用领接表存储图时候,开始实现的时候发现对结构体的变量名赋值有些疑惑,疑惑的地方查了下,留做备份 //此声明声明了拥有3个成员的结构体,分别为整型的a,...

    结构体的详情参考本文档

    c语言中结构体类型变量类型,结构体变量名赋值

    这几天看图用领接表存储图时候,开始实现的时候发现对结构体的变量名赋值有些疑惑,疑惑的地方查了下,留做备份

    //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
    //同时又声明了结构体变量s1
    //这个结构体并没有标明其标签
    struct
    {
    int a;
    char b;
    double c;
    } s1;

    //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
    //结构体的标签被命名为SIMPLE,没有声明变量
    struct SIMPLE
    {
    int a;
    char b;
    double c;
    };
    //用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
    struct SIMPLE t1, t2[20], *t3;

    *//也可以用typedef创建新类型
    typedef struct
    {
    int a;
    char b;
    double c;
    } Simple2;
    //现在可以用Simple2作为类型声明新的结构体变量
    Simple2 u1, u2[20], u3;

    在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1则是非法的。

    展开全文
  • 结构体变量赋值给同类型的结构体变量     备注:程序遗漏返回值(可以正常编译),代码最后需要加return 0;。...

                                                                    结构体变量赋值给同类型的结构体变量

     

     

    备注:程序遗漏返回值(可以正常编译),代码最后需要加return 0;。

    展开全文
  • 结构体变量赋值

    千次阅读 2014-07-25 09:52:33
    以前在使用结构体时没有在结构体变量之间直接赋值,今天同事在查看别人的代码时,发现有两个结构体变量直接赋值的语句当时感觉这个语句不对,认为在一个结构体里边,既有一般的无符号整形与数组,因为数组的赋值是不...
    以前在使用结构体时没有在结构体变量之间直接赋值,今天同事在查看别人的代码时,发现有两个结构体变量直接赋值的语句当时感觉这个语句不对,认为在一个结构体里边,既有一般的无符号整形与数组,因为数组的赋值是不能直接赋值,要内存拷贝,从这里推理所以认为这个语句不对。于是问了一下,我当时以为是结构体指针变量的赋值,认为没有问题。还和同事争论了一番,当他让我看源代码时,发现是变量间的直接赋值,下意识中的判断是不对,原因就和之前他理解的一样。

    于是晚上到住处在网上查了一下,说是可以的,因为是同样的数据类型,而C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
    同时敲了一段很简单的代码测试一下,看到底是为什么。发现确实是这样。那么C语言在变量间的赋值是如何进行的呢?

    再查找发现在C中一个变量名其实就是一个地址对应着一块内存的起始地址,赋值操作符就是找到这块内存的起始地址。

    网上一个关于结构体变量复制的帖子
    #include <stdio.h>

    typedef struct
    {
         unsigned char a;
         unsigned char b;
         unsigned char c;
         unsigned char d[10];
    }TestStruct;

    int main(void)
    {
         TestStruct a = {0};
         TestStruct b = {0};

         a.a = 1;
         a.b = 2;
         a.c = 3;
         a.d[2] = 5;

         b = a;

         printf("a.a:%d \n a.b:%d \n a.c:%d \n a.d[2]:%d \n", a.a, a.b, a.c, a.d[2]);

         printf("b.a:%d \n b.b:%d \n b.c %d \n b.d[2]:%d \n", b.a, b.b, b.c, b.d[2]);

         return 0;

    }

    展开全文
  • 那么怎么m_ctx.powner赋值呢? 下面是部分代码,需要的话也可以把代码都发出来 C++ ``` BOOL Cdbc_demoDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到...
  • 近期,我阅读了某新员工小刘写的C语言代码,发现其对结构体变量之间的赋值不是非常熟悉。对于两个同样类型的结构体变量,他均採用的是逐个成员变量直接赋值的形式。例如以下的代码演示样例: 如上代码所看到的,...
  • 三种方式视情况而定,看自己喜欢哪一种 #include <iostream> #include <... //第一种 直接定义变量 struct student one; one.name = "张三"; one.score = 99; cout << "姓名:" <&l
  • 描述结构体(struct)是...结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。...
  • 结构体变量赋值

    2020-02-22 15:21:51
    结构体内变量赋值暂且分为三种(笔者此时只能想到三种) 1.定义时赋值 2.定义后对变量挨个赋值 3.利用函数进行赋值 赋值时再分为两类 1.非数组赋值 2.数组赋值 1.比较简单,在此不做过多介绍,只是简单贴下代码。 ...
  • 结构体变量赋值 #include <stdio.h> #include <string.h> struct student { char name[20]; int age; }; int main () { struct student st1 = {"abc", 30}; struct student st2; st...
  • 以前在使用结构体时没有在结构体变量之间直接赋值,今天同事在查看别人的代码时,发现有两个结构体变量直接赋值的语句当时感觉这个语句不对,认为在一个结构体里边,既有一般的无符号整形与数组,因为数组的赋值是不...
  • 为此,C提供了结构体变量提高表示数据的能力,它能让你创造新的形式。 1、结构体的定义 struct book { char title[40]; //书名 char author[40]; //作者 float price; //单价 }; 在结构体声明中,用一对...
  • Go语言通过反射用字符串字段给结构体变量赋值理解reflect的使用 我们知道一个结构体变量直接赋值可以直接写死 a := struct { name string age int }{ name: "haha", age: 1, } a.name = "hahaha" **...
  • struct s { int a; };...为什么全局结构体变量成员只能在函数内调用? 因为g.a=1是赋值语句,不是初始化语句,赋值语句只能运行的时候可以执行。 转载于:https://www.cnblogs.com/any91/p/6...
  • 结构体变量赋值方法

    千次阅读 2011-12-06 10:41:20
     //对结构体部分成员变量赋值  .read = sn7325_read,  .write = sn7325_write, //最后一个","可要可不要  //或者采用下面的赋值方法  read : sn7325_read,  write : sn7325_write, //最后...
  • 如题 本人用Delphi7使用结构体(record)类型,赋值的时候有时候成功有时候失败?很是不解,不知大家是否遇到过这样的情况。难道说是Delphi的bug还是需要注意那些问题?
  • 关于UE4 中结构体 赋值结构体赋值 ** 1, 经典的指令 set ref 当我们对结构体进行赋值的时候, 最常用的指令是 set ref , 使用此指令可以 快读的对 结构体 中的一个单元进行赋值。 但是我们在测试的时候, 此条指令...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,697
精华内容 39,478
关键字:

结构体给变量赋值