精华内容
下载资源
问答
  • 设计一个结构体,存储某个学生的主要学籍信息,包括姓名,性别,班级和学号等,使用结构体实现对结构体变量成员的输入和输出 #include<stdio.h> struct si { char name[30]; char sex[10]; unsigned int ...

    设计一个结构体,存储某个学生的主要学籍信息,包括姓名,性别,班级和学号等,使用结构体实现对结构体变量成员的输入和输出

    #include<stdio.h>
    struct si
    {
     char name[30];
     char sex[10];
     unsigned int classno;
     char studentid[15];
    };
    int main()
    {
     int i=0;
     struct si yansl,*pstu;
     pstu=&yansl;				//使指针pstu指向结构体变量yansl
     printf("输入学生学籍信息:\n");
     printf("学生姓名:\n");
     scanf("%s",yansl.name);
     printf("学生性别:\n");
     scanf("%s",yansl.sex);
     printf("学生班号:\n");
     scanf("%s",yansl.classno);
     printf("学生学号:\n");
     scanf("%s",yansl.studentid);
     printf("使用指针输出学生学籍信息:\n");
     printf("学生姓名:%s\n",pstu->name);
     printf("学生性别:%s\n",pstu->sex);
     printf("学生班号:%s\n",pstu->classno);
     printf("学生学号:%s\n",pstu->studentid);
    }
    展开全文
  • C++类结构体指针引用

    2020-06-24 19:17:13
    文章目录类class结构体struct 类 class 定义:可以将变量打包在一起 privacy后面数组或者函数表示都是私有的只能在类里面调用,public表示在类外面和里面都可以公用 结构体 struct 结构体可以构造函数,内部可以写...

    class

    定义:可以将变量打包在一起
    privacy后面数组或者函数表示都是私有的只能在类里面调用,public表示在类外面和里面都可以公用

    结构体

    struct

    结构体可以构造函数,内部可以写参数

    #include <iostream>
    using namespace std;
    struct Person
    {
        int age, height;
        double money;/* Person(){}默认无参数时调用 int main()里面Person p;*/
    
        Person(int _age, int _height, double _money)//可以调用参数,person是构造函数
        {
            age =_age;
            height = _height;
            money =_money;
        }
    };
    
    
    int main()
    {
        Person p(18, 100, 10000);//含参数构造的函数
        return 0;
    }
    

    进程

    有空间的概念,每一个程序长度有映射关系是该空间的数组,打开文件是独立的。
    百度概念:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。
    特征
    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
    并发性:任何进程都可以同其他进程一起并发执行
    独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
    异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
    结构特征:进程由程序、数据和进程控制块三部分组成。

    可以定义函数变量,局部变量,是自上而下运行。
    百度概念:栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
    栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。
    栈可以用来在函数调用的时候存储断点,做递归时要用到栈。

    可以定义全局变量,初始化为0;
    百度概念:堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。
    堆是非线性数据结构,相当于一维数组,有两个直接后继。堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4…n/2)
    若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含义表明,完全二叉树中所有非终端结点的值均不大于(或不小于)其左、右孩子结点的值。由此,若序列{k1,k2,…,kn}是堆,则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值)。

    指针和引用

    指针指向存放变量的值的地址,我们可以通过指针来修改变量的值。
    百度概念:指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。

    指针的地址与原值的关系是,原值是a(此时a的地址相当于数组下标8位byte,若取得char c 定义c = ‘a’ ,地址输出cout << (void *) &c <<endl;表示存储其下标,即存了97的值用16位字符表示。

    1. 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。
    2. 引用初始化后不能被改变,指针可以改变所指的对象。
    3. 不存在指向空值的引用,但是存在指向空值的指针。

    定义指针

    实验
    #include <iostream>
     using namespace std;
     
     int main()
     {
         int a = 3;
         int* p = &a;
         
         cout << (void *)p << endl;//a的地址
         cout << *p << endl;//*p = a = 3
         return 0;
     }
         /*
         *p += 5;输出*p表示a的地址增加5个值,但输出a还是原指针地址值
          */
     }int a =1int* p = &a;
    定义*p = 12; cout << *p << endl; //*p变成12
    此时a的值也有所改变为12

    数组指针

    &p = a 表示a的给指针取名字

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int a[5] = {1,2,3,4,5};
        cout << a << endl;//表示输出第一个位置指针地址
        /*for (int i = 0;i<5; i++)
              int* p = &a[i];
              cout << (void*)p << endl;
        */
        for (int i = 0;i<5; i++)
        {
            cout << (void *) &a[i] << endl;//输出a数组5个地址
        }
        return 0;
    }
    
    
    

    链表

    百度定义:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

    如果p指针可以用p -> next = p表示存储结点地址而不是它的值;如果p不是指针可以用“.”调用p. next =p;

    链表表示

    Node *p = new Node(1);
    或者 auto q = new Node(1);
    表示返回地址存储1号结点地址;
    auto q =new Node(1)//在二号节点地址
    p -> next = q;//表示p指向构造新的结点q
    一般的存到head里面是第一个结点地址,而不是他的值。

    链表删除

    是指原链表遍布过程中跳过,用next指向下一位;

    删除结点

    head->next = head ->next->next;//表示删除

    添加结点

    auto u = new Node(u);
    u-> next = head;
    head = u;
    //表示在投部添加结点u;

    展开全文
  • 关于如何理解链表结构体指针引用LinkNode * &L的问题

    千次阅读 多人点赞 2018-09-28 02:14:59
    初学数据结构,在学习的过程中有了...a是目标原名称,ra是引用名,由引用的作用“引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。”可知当改变ra的值时,a的值也会随之改变。 此处主...

    初学数据结构,在学习的过程中有了这个疑问,已经理解其中缘由,特写篇博客和大家一起分享交流。

    C++中的引用:&


    int a=10;
    int &ra=a;
    

    注意:此处&是标识符,不是取地址符!

    a是目标原名称,ra是引用名,由引用的作用“引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。”可知当改变ra的值时,a的值也会随之改变。

    此处主要讲的是引用的<传递可变参数>的作用,如一下代码

    c形式:

    void swapint(int *a,int *b)
    {
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
    }

    c++形式:

    void swapint(int &a,int &b)
    {
    int temp;
    temp=a;
    a=b;
    b=temp;
    }

    以上两种代码作用相同,c++形式的代码采用了引用的方法,那么该函数结束后a,b的值也会随之改变,

    int 是所引用变量的类型

    链表结构体指针的引用


    我所使用的教材是武汉大学的教学教材,其中结构体结点的定义如下:

    typedef struct node{
      ElemType data;
      struct node *next;
    }Linknode;

    几个常见的链表操作的函数:

    bool createlink(linknode * &L,elemtype a[],int n)//创建链表
    bool delete(linknode * &L,int i)//删除第i个元素e
    

    其他一些相关的语句:

    linknode * L;//创建头结点
    L=(linknode *)malloc(sizeof(linknode));//为头结点分配空间

    linknode * L,即声明了一个结构体的指针,L指向的是这个结构体的首地址,记该地址为A1

    malloc 为这个结构体指针类型的变量L分配的一个内存空间,此时即L指向的地址为A2

    linknode * &L,即引用了这个结构体指针类型的变量L,引用L则会改变L,记delete函数执行完后L指向的地址为A3

    我自己写了个简单的程序,输出这三个地址,发现:A1!=A2,  A2=A3

    说明在删除一个元素之后L指向的地址并没有发生改变

    我试着去掉insert函数用对L的引用符,发现依旧可以正常的删除,那么就没必要用引用符

    结论


    后来在询问了老师之后,我最终得到了如下结论:

    引用L是为了改变L的值,而L指向的是链表的头结点的地址,即要改变头结点的地址,但是一般改链都是对头结点之后的结点进行操作,所以头结点的地址一直没变,故去掉&后函数依旧可以正常执行。之所以会加&,是以防有的链表没有头结点,因为可能会对第一个结点操作,那L的地址就会改变。

    展开全文
  • 结构体的引用结构体指针引用

    千次阅读 2014-05-04 15:07:43
    结构体的引用结构体指针引用 当结构体是一个指针时要引用结构体的成员就用-> 而如果不是指针就用. 如: struct msg_st {  int a; }; struct msg_st msg; struct msg_st *ms;//需要初始化 msg.a = ...

    结构体的引用与结构体指针的引用

    当结构体是一个指针时要引用结构体的成员就用-> 而如果不是指针就用.
    如:
    struct msg_st
    {
       int a;
    };
    struct msg_st msg;
    struct msg_st *ms;//需要初始化
    msg.a = 10;
    ms->a = 20;


    结构体变量成员的引用(两种方式)
    #include<stdio.h>
    int main()
    {
      struct student
      {
        char name[20];
        char sex;
        int age;
        float score;   
      }stu;
     
      printf("输入姓名:\n");
      gets(stu.name);
      printf("输入性别:\n");
      stu.sex = getchar();
      printf("输入年龄:\n");
      scanf("%d",&stu.age);
      printf("输入成绩:\n");
      scanf("%f",&stu.score);
     
      printf("姓名:%s,性别:%c,年龄:%d,成绩:%5.2f\n",stu.name,stu.sex,stu.age,stu.score);
      system("pause");
      return 0;
    }

     

    #include<stdio.h>
    int main()
    {
      struct student
      {
         char number[6];
         char name[20];
         char sex;
         int age;
         float score;      
      }s1={"12004","李明",'m',19,298.3},s2={"12005","王丽",'f',18,227.9};
      struct student *p;  //定义p为结构体变量
      p = &s1;          //p指向结构体变量s1
      printf("学号       姓名        性别      年龄      分数\n\n");
      printf("%s     %s    %c    %d     %5.2f\n",p->number,p->name,p->sex,p->age,p->score);
      p = &s2;        //p指向结构体变量s2
      printf("%s     %s    %c    %d     %5.2f\n",p->number,p->name,p->sex,p->age,p->score);
      system("pause");
      return 0;
    }

    展开全文
  • 结构体中的结构体指针是使用一、问题背景二、代码三、说明 一、问题背景   日常工作中没有编程的机会,所以只看得懂代码,现在需要重新写一段代码,实现固定格式存储数据,需要使用到结构体和结构体指针。数据...
  • 结构体数组和结构体指针的应用,结构体成员引用的表示方法 //结构体数组和结构体指针的应用,结构体成员引用的表示方法 // Created by acer on 2020/8/30. #include<stdio.h> struct student{ int num; char...
  • c语言结构体学习整理(结构体初始化,结构体指针)

    万次阅读 多人点赞 2018-11-01 20:22:12
    c语言中交换两个结构体的值(结构体指针) 1关于语言的结构体: 首先我们为什么要用到结构体,我们都已经学了很多int char …等类型还学到了同类型元素构成的数组,以及取上述类型的指针,在一些小应用可以灵活...
  • (*stu).name 与 stu->name 在内存里面具体分别是怎么实现的啊 假设student 结构体指针为stu。 另外student是结构体的首地址吗
  • 结构体指针,可细分为指向结构体变量的指针和指向结构体数组的指针。html指向结构体变量的指针前面咱们经过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法以外还能够使用指针。前面讲过,&...
  • 结构体指针,可细分为指向结构体变量的指针和指向结构体数组的指针。 指向结构体变量的指针 前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。 前面讲过,&...
  • 程序中有一个结构体指针,我想拷贝一份,建立一个新的结构体指针变量,并且分配内存。 可是结构体里面嵌套了多层结构体指针,这样分配内存好麻烦,一层一层的,也怕漏掉。 有没有什么好的办法进行这种结构体指针的...
  • 结构体指针,可细分为指向结构体变量的指针和指向结构体数组的指针。指向结构体变量的指针前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。前面讲过,&...
  • C#调用C++生成的DLL,并返回结构体引用或者结构体指针多个值,工程已编译好
  • 本篇文章是对C语言中结构体指针的定义与引用进行了详细的分析介绍,需要的朋友参考下
  • 结构体指针

    2017-09-11 22:28:58
    一、结构体指针的定义与使用 当一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。 结构体指针变量的值是所指向的结构体变量的起始地址。通过结构体指针即可访问该结构体变量,这与数组指针和函数...
  • 文章目录结构体指针的定义使用结构体指针引用结构体成员结构体指针作为函数参数传递 视频地址:https://www.bilibili.com/video/av74820522 结构体指针的定义 结构体指针的定义与基本数据结构的指针类似,使用"*...
  • C语言中的结构体指针

    千次阅读 多人点赞 2017-01-16 23:45:08
    C语言中的结构体指针 结构体指针概念 结构体变量成员访问 结构体指针作为函数参数 结构体数组指针 结构体的自引用与不完全声明 结构体指针的概念概念:结构体变量的地址,指向某个结构体变量(同时也是结构体变量中第...
  • 结构体指针的定义与使用 当一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。 结构体指针变量的值是所指向的结构体变量的起始地址。通过结构体指针即可访问该结构体变量,这与数组指针和函数指针的情况...
  • C语言学习笔记之结构体指针变量一提指针,那可是C语言的核心了,有多少学子曾拜倒在指针的脚下。单纯的说指针,其实并不难,但是与其它的结构搭配在一起,那可就愁死人了。比如说:数组一点都不难,但是与指针一起用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,655
精华内容 31,862
关键字:

结构体指针的引用