编程c语言-关于c语言结构体指针的问题

问题描述

关于c语言结构体指针的问题

结构体指针只包含了结构体的首地址还是包含了所有成员的地址?还有结构体的首地址是什么,比如第一个成员是一个数组,那么首地址是不是就是这个数组的首地址?

解决方案

结构体指针既是结构体首成员的地址,也是结构体的首地址。你说的是对的。
好比数组指针既是数组的首地址,也是数组第一个元素的首地址。

解决方案二:

指针也可以指向一个结构体变量。定义的一般形式为:

struct 结构体名 *变量名;
前面已经定义了一个结构体 stu:

struct stu{ char *name; int num; char sex; float score;};

下面定义一个指向 stu 的指针变量 pstu:
struct stu *pstu;
当然在定义结构体的同......
答案就在这里:C语言结构体和指针
----------------------

解决方案三:

结构体,不是数组,没有首地址一说
结构体 对象的地址,就是分配给这个对象的地址
和int 地址一样
不过结构体有内部成员,
C 或者
C++POD类型

结构体对象的第一个成员的地址(如果有地址)
和结构体对象地址相同。

解决方案四:

首先,指针是一个存放地址的变量,就好比一排房子,你要找的东西在这排房子的某一间内,但具体的房间编号在1号房内,那么要取到目标物就要先到1号房去把编号找到,然后根据编号去找对应的房间;
指针就是这个存放编号的房间,并且它只能放一个编号,不同类型的指针可以存放不同类型的指针;
要区分结构体类型 和 结构体变量,前者是定义一个数据类型(并不分配空间),后者是根据这个类型在内存中分配了具体的空间,
结构体变量是根据它的成员的类型依次分配空间的,各成员变量的内存分配是相邻的,所以第一个成员的地址就是这个结构体变量的地址.

时间: 2024-12-29 10:10:08

编程c语言-关于c语言结构体指针的问题的相关文章

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+   指针数组: 在一个数组中,如果它的元素全部都是指针

struct-关于C语言结构体指针数组的问题

问题描述 关于C语言结构体指针数组的问题 //结构体struct student{ int iNum; char cName[16]; float fChineseScore; float fMathScore; float fEnglishScore;};typedef struct student STUDENT;//输入void InputTranscript(STUDENT MyClass[] int num){ int i; printf(""请输入学生的成绩信息:n&quo

c语言-C语言typedef问题与结构体数组问题

问题描述 C语言typedef问题与结构体数组问题 typedef struct students{ long code; char *name; float score[3]; float sum;}cla[40];这样定义是什么意思呢?cla代替了struct students?正确的写法是怎么样的 解决方案 定义了一个班级类型,它代表40个学生,cla代替了students[40]以后可以定义变量cla cla1;cla1就是一个40个students组成的数组 语法上没问题,不过个人觉得

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

c语言-结构体指针数组指向结构体类型数组的问题

问题描述 结构体指针数组指向结构体类型数组的问题 #include<stdio.h> #include<stdlib.h> struct student { char num; char name[10]; int grade; }; void swap(struct student *p[],int n) { int k,m,i,j; struct student *d; k=0;m=n-1; while(k<m) { j=m-1;m=0; for(i=k;i<=j;

c++-Visula Basic 6.0语言调用C++ struct结构体中的字符串问题

问题描述 Visula Basic 6.0语言调用C++ struct结构体中的字符串问题 VB6调用C++ DLL结构体struct中的字符串,内存预分配的写法是什么,内存回收怎么做?VB不能用指针的谢谢 解决方案 VB不支持指针,一般你可以定义成局部变量,这样函数退出会自动回收的. 解决方案二: c++公用体union.结构体struct内存分配问题

c-C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么

问题描述 C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么 解决方案 p 没有初始化,也就是没有分配空间.典型的指针错误,不初始化,指针指向哪里呢? 解决方案二: array *p = new array(); 解决方案三: array p;test(&p); 解决方案四: 当然,使用指针应该首先初始化一个空地址的,否则,很容易发生指针地址错误其次,看了一下你的程序设计,程序本身是定义了一个array的结构体变量,在主函数中却要申请一个指针变量p(它的类型是结构体),一系列操

图片-C语言,请教关于结构体数组的问题

问题描述 C语言,请教关于结构体数组的问题 图中倒数第二行 scanf("%d",&G[i]); 结构体VNode中有两类元素int data 和ArcNode *firstarc 为什么"&G[i]"就是给结构体VNode中的data赋值? 解决方案 &G[i]和&G[i].data的地址相同,有的编译器允许这样使用. 解决方案二: C语言结构体数组赋值问题IOS开发---C语言-?结构体数组C语言中的结构体数组 解决方案三: 我想

c语言-C语言求助!!!写了一个返回结构体指针的函数,编译时总是提醒没有初始化q,但是初始化了。

问题描述 C语言求助!!!写了一个返回结构体指针的函数,编译时总是提醒没有初始化q,但是初始化了. 下面是源码下载:http://pan.baidu.com/s/1dDhplwH 程序是用C语言写的,VS2013编译. 这是其中使用结构体的定义 这是哈夫曼函数的定义 解决方案 创建的时候可以 -- ,*q = NULL; malloc 之后 memset(q, 0 , sizeof(--)): 解决方案二: 创建的时候可以 -- ,*q = NULL; malloc 之后 memset(q, 0