首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果使用指针初始化结构,那么结构本身的名称是什么

如果使用指针初始化结构,结构本身的名称仍然是结构的名称。指针只是指向结构的内存地址,而不是结构本身的名称。指针可以通过使用结构的名称加上箭头运算符(->)来访问结构的成员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言结构体与结构指针使用

C语言结构体与结构指针使用 tips:最近要好好学习一下数据结构,所以必不可少就是c语言结构体和结构指针了,所以就整理一下这些基础知识 c语言结构体(struct)是由一系列具有相同类型或不同类型数据构成数据集合...说通俗一点就是一个集合。c语言是一门面向过程编程语言,而结构使用在某些层次上跟面向对象有点异曲同工之处了。下面回归正题,学习一下结构体以及结构指针知识。...一、结构体变量定义和初始化 1、首先我们来看一下结构定义 struct 结构体名 { 成员列表; };//不要漏掉这里分号!...,结构体名是一种类型,不能被当成变量名来使用 变量名声明方法: 1)struct 结构体名 结构体变量名; 2)直接在定义结构时候添加变量名声明 //在main()中定义及初始化 struct...3; i++) { printf("%d,%s,%c\n", sarr[i].num,sarr[i].name,sarr[i].sex); } 1234567891011 二、结构指针使用

2.1K10

你必须知道指针基础-6.内存初始化结构使用

二、结构使用 2.1 结构初始化 ?   结构体其实就是一大块内存,我们可以对它进行格式化存储和读取。...2.2 包含指针结构体大小   对于普通数据类型结构体,计算结构大小是件容易事。但是,如果是有包含有指针结构体呢?我想,很多跟我一样菜鸟都会犯错。...那么,我们来看看刚刚那个结构大小是多少吧?...那么,问题来了,为什么是16呢?原来,对于int、short等放到结构体中保存是占用对应字节,但是对于char*等,则只是保存它指针(地址)。...于是,这时我们就可以使用一个指向结构指针来实现。

67130
  • JVM笔记--如果你写JVM,最需要考虑重要结构是什么

    Github仓库地址:https://github.com/Damaer/JvmNote 文档地址:https://damaer.github.io/JvmNote/ 如果有图片,图片都是draw.io...开局一张图,前面已经从每一部分解析过JVM内存结构【JVM笔记【1】-- 运行时数据区】了,现在按照顺序来分析: 整体上来看:类文件从类加载子系统,加载完成之后,主要存放在方法区(JRockit和H9...在类加载子系统中有以下三个阶段操作: 加载 链接 初始化 其中加载时候,有三种类加载器: Bootstrap ClassLoader:引导类加载器,主要加载JDK里面的核心类 Extension ClassLoader...譬如:如果循环两千次,循环体很大,每次执行都需要解释执行。...如果需要写一个虚拟机,那么需要考虑重要两部分是:类加载子系统和执行引擎。 类加载子系统负责将类信息按照规定,加载到运行时数据区,而执行引擎主要负责对代码解释执行或者编译成二进制缓存起来,进行执行。

    16810

    JVM笔记--如果你写JVM,最需要考虑重要结构是什么

    开局一张图,前面已经从每一部分解析过JVM内存结构了,现在按照顺序来分析: [20210220160527.png] 整体上来看:类文件从类加载子系统,加载完成之后,主要存放在方法区(JRockit和...在类加载子系统中有以下三个阶段操作: 加载 链接 初始化 [20210220162006.png] 其中加载时候,有三种类加载器: Bootstrap ClassLoader:引导类加载器,主要加载JDK...譬如:如果循环两千次,循环体很大,每次执行都需要解释执行。...如果需要写一个虚拟机,那么需要考虑重要两部分是:类加载子系统和执行引擎。类加载子系统负责将类信息按照规定,加载到运行时数据区,而执行引擎主要负责对代码解释执行或者编译成二进制缓存起来,进行执行。...开源刷题笔记 平日时间宝贵,只能使用晚上以及周末时间学习写作,关注我,我们一起成长吧~

    23820

    C语言结构体类型定义+结构体变量定义与使用及其初始化+结构体变量作为函数参数

    上一篇文章:返回指针函数+指向函数指针+main()函数参数 C语言结构体类型定义+结构体变量定义与使用及其初始化+结构体变量作为函数参数 结构体 引例 结构体变量定义 结构体变量使用...结构体变量作为函数参数 结构体变量初始化 下一篇文章 结构体 引例 输出平均分最高学生信息 #include struct student { int num; char name...int main() { struct date year; year.year = 1980; } 1234567891011 结构体变量使用 使用形式为:结构体变量.结构体成员名...scanf("%d%s%d%d%d",&s1.num,s1.name,&s1.math,&s1.english,&s1.computer); 1 注意:如果结构体类型中有字符数组成员,并且在主函数中要给字符数组赋字符串常量时...} 1234567891011121314151617181920212223242526272829303132333435363738394041 结构体变量初始化 结构体变量初始化一般形式为

    2.4K20

    【说站】c语言中使用指向结构指针原因

    c语言中使用指向结构指针原因 1、指向结构指针通常比结构本身更容易控制。 2、早期结构不能作为参数传递给函数,但可以传递指向结构指针。 3、即使可以传递结构,传递指针通常也更有效率。...4、一些用于表示数据结构包含指向其他结构指针。...,guy结构里嵌套了names结构         //初始化结构数组fellow,每个元素都是一个结构变量         {{"Ewen","Villard"},         "girlled ...        "tabloid editor",         432400.00         }     };         struct guy * him;       //这是一个指向结构指针... $68112.00:(*him).income is $68112.00 him->favfood is tripe: him->handle.last is Swillbelly 以上就是c语言中使用指向结构指针原因

    69520

    const修饰符使用(修饰结构指针,引用外部const 变量)

    const修饰符使用 //const修饰变量为只读 const int a = 10; a = 20;//是错误赋值 //指针变量 指针指向内存 两个不同概念 char buf[] =..."helloworld"; //从左往右看,跳过类型,看修饰那个字符 //如果是*,说明指针指向内存不能改变 //如果指针变量,说明指针指向不能改变,指针值不能修改 const char *p...{ //结构指针可以修改 //结构指针指向内存也可以改变 } void fun2(my_struct const *p) { //结构指针可以修改 //如...//结构指针指向不可以修改 p = NULL是错误 //结构指针指向内容可以修改 p->a = 10是可以修改 } void fun4(const my_struct * const...p) { //结构指针指向不可以修改 //结构指针指向内存当中内容也不可以修改 } 如何引用其他.c文件中const变量 extern const int a;//注意,不能再进行赋值

    53710

    自定义类型和结构体 - 方法

    概念 上篇学习了什么是自定义类型,对于结构体也是自定义类型一种,那方法是什么如果一个函数属于一个自定义类型时,那它被称为方法,类似于面向对象中给类增加方法。...如果方法名称和类型名称相同是可以允许。 方法调用 不管自定义类型是基于内置类型还是结构体,都可以携带方法。...还有一种特殊情况就是自定义类型本身就是引用类型,就算接收者类型声明中带不带”星号“它也属于指针接收者。...本身就是一个引用类型,因此 m 为指针接收者。...New 函数使用初始化一个指针变量时,可以使用 "&" 符号,也可以使用 new 函数。 new(T) 例如,将 p2 := &People{} 修改。

    71820

    2021-06-13:如果一个节点X,它左树结构和右树结构完全一样,那么我们说以X为头树是相等树。给定一棵二叉树头节点hea

    2021-06-13:如果一个节点X,它左树结构和右树结构完全一样,那么我们说以X为头树是相等树。给定一棵二叉树头节点head,返回head整棵树上有多少棵相等子树。...相等判断函数:左结构=右结构,O(N)。 树越不平衡,复杂度越低,因此算复杂度时候,只需要考虑平衡树。 master公式:T(N)=2T(N/2)+O(N)。2T(N/2)是递归。...方法二:方法一相等判断函数用哈希函数。 递归函数:头num=左num+右num+0或1。头哈希=【左哈希+头值+右哈希】哈希值。这个递归有两个返回值。...相等判断函数:左结构=右结构,用哈希值判断,O(1)。 树越不平衡,复杂度越低,因此算复杂度时候,只需要考虑平衡树。 master公式:T(N)=2T(N/2)+O(1)。2T(N/2)是递归。

    25020

    Go基础系列:struct和嵌套struct

    T struct { a, b int } 理论上,每个字段都是有具有唯一性名字,但如果确定某个字段不会被使用,可以将其名称定义为空标识符_来丢弃掉: 1type T struct { 2...完全随意,它们是等价。但如果想要初始化时就赋值,可以考虑使用&TYPE{}方式。...复制传值时,如果函数参数是一个struct对象,将直接复制整个数据结构副本传递给函数,这有两个问题: 函数内部无法修改传递给函数原始数据结构,它修改只是原始数据结构拷贝后副本 如果传递原始数据结构很大...对于已经创建成功struct实例p,如果这个实例是一个值而非指针(即p->{person_fields}),那么可以&p来获取这个已存在实例指针,然后传递给函数,如add(&p)。...递归struct:嵌套自身 如果struct中嵌套struct类型是自己指针类型,可以用来生成特殊数据结构:链表或二叉树(双端链表)。

    4.2K20

    结构体与指针(一)

    在学习数据结构时候,会经常使用结构体。今天分享内容是结构体与指针,因为结构体和指针本身内容并不是太多,所以今天内容还包括了链表实现。...结构创建格式如下: struct 结构名称{ 成员1 成员2 ..... } 定义一个结构关键词是struct,那么学生结构创建如下: struct student{ char...(1)结构指针定义 结构指针定义和普通指针变量定义是相似的,在未使用typedef时,结构指针定义如下: struct 结构名称 *结构指针变量名称; //那么学生结构指针定义如下 struct...student *p; 而使用typedef之后,定义如下: Student *p; (2)结构指针初始化结构体 在此之前先讲一下访问结构体成员三种方式,假定有下列结构体和结构指针: //声明一个结构体变量和结构指针变量...结构成员不允许是本身结构体变量,但是可以为本身结构指针。以为指针大小是确定,而如果成员中有本身结构体变量系统将无法知道这个结构体应该分配多少内存。 结构具体实现将在下一篇为大家分享。

    67910

    Go语言核心36讲(Go语言进阶技术八)--学习笔记

    如果你查阅了上篇文章附带最后一个示例的话,那么就一定会知道,虽然结构体类型Cat不是Pet接口实现类型,但它指针类型*Cat却是这个实现类型。 如果你还不知道原因,那么请跟着我一起来看。...为什么dogname字段值变了,而pet却没有呢?这里有一条通用规则需要你知晓:如果我们使用一个变量给另外一个变量赋值,那么真正赋给后者,并不是前者持有的那个值,而是该值一个副本。...不过,如果当我问你为什么时候你只说出了这一个原因,那么,我只能说你仅仅答对了一半。 那么另一半是什么?这就需要从接口类型值存储方式和结构说起了。我在前面说过,接口类型本身是无法被值化。...因此,当我们使用判等符号==判断pet是否与字面量nil相等时候,答案一定会是false。 那么,怎样才能让一个接口变量值真正为nil呢?要么只声明它但不做初始化,要么直接把字面量nil赋给它。...思考题 如果我们把一个值为nil某个实现类型变量赋给了接口变量,那么在这个接口变量上仍然可以调用该接口方法吗?如果可以,有哪些注意事项?如果不可以,原因是什么

    36101

    Go语言核心36讲(Go语言进阶技术八)--学习笔记

    如果你查阅了上篇文章附带最后一个示例的话,那么就一定会知道,虽然结构体类型Cat不是Pet接口实现类型,但它指针类型*Cat却是这个实现类型。 如果你还不知道原因,那么请跟着我一起来看。...为什么dogname字段值变了,而pet却没有呢?这里有一条通用规则需要你知晓:如果我们使用一个变量给另外一个变量赋值,那么真正赋给后者,并不是前者持有的那个值,而是该值一个副本。...不过,如果当我问你为什么时候你只说出了这一个原因,那么,我只能说你仅仅答对了一半。 那么另一半是什么?这就需要从接口类型值存储方式和结构说起了。我在前面说过,接口类型本身是无法被值化。...如果你真正理解了我在上一个问题解析中讲到知识,尤其是接口变量赋值及其值数据结构那部分,那么这道题就不难回答。你可以先思考一下,然后再接着往下看。...因此,当我们使用判等符号==判断pet是否与字面量nil相等时候,答案一定会是false。 那么,怎样才能让一个接口变量值真正为nil呢?要么只声明它但不做初始化,要么直接把字面量nil赋给它。

    35530

    Go语言核心36讲(Go语言进阶技术七)--学习笔记

    并且,如果它们所属是一个结构体类型,那么它们名称与该类型中任何字段名称也不能重复。...那么,我们今天问题是:Animal类型中字段声明AnimalCategory代表了什么? 更宽泛地讲,如果结构体类型某个字段声明中只有一个类型名,那么该字段代表了什么?...Go 语言规范规定,如果一个字段声明中只有字段类型名而没有字段名称那么它就是一个嵌入字段,也可以被称为匿名字段。我们可以通过此类型变量名称后跟“.”,再后跟嵌入字段类型方式引用到该字段。...最后最后,如果处于同一个层级多个嵌入字段拥有同名字段或方法,那么从被嵌入类型值那里,选择此名称时候就会引发一个编译错误,因为编译器无法确定被选择成员到底是哪一个。...如果一个基本类型和它指针类型方法集合是不同那么它们具体实现接口类型数量就也会有差异,除非这两个数量都是零。

    33401

    面向对象之this指针与类中枚举类型

    this指针与类中枚举类型 1.this指针 相信在坐很多人,都在学Python,对于Python来说有self,类比到C++中就是this指针那么下面一起来深入分析this指针在类中使用!...首先来谈谈this指针用处: (1)一个对象this指针并不是对象本身一部分,不会影响sizeof(对象)结果。...其次,this指针使用: (1)在类非静态成员函数中返回类对象本身时候,直接使用 return *this。 (2)当参数与成员变量名相同时,如this->n = n (不能写成n = n)。...在C++中类和结构是只有一个区别的:类成员默认是private,而结构是public。this是类指针如果换成结构,那this就是结构指针了。...以下用法是错误,因为类对象未被创建时,编译器不知道 SIZE 是什么

    1.2K10

    谷歌大牛编程建议和技巧

    指针也需要合理符号。np仅仅只是作为指针 nodepointer 助记符。如果一贯都遵从命名规范,那么很容易就能推断出 np 表示“节点指针”。在下一篇文章中会提到更多。...与此相关问题是,指针类型会影响指针正确使用,这也就允许在编译阶段使用一些有用错误检测,来检查数组序列不能分开。而且如果结构体,那么它们标签字段就是其类型提示。因此 是足以让人明白。...一般来说,如果发现代码中包含许多相似并复杂表达式,而且表达式计算为数据结构元素,那么明智地使用指针可以消除这些问题。...第一,假如代码清晰,并且使用了规范类型名称和变量名称,应该从代码本身就可以理解。第二,编译器不能检查注释,因此不能保证准确,特别是代码修改过以后。误导性注释会非常令人困惑。...如果声明(在注释或隐式声明里)需要文件没有优先包含进来,那么使用者(程序员)要决定包含哪些文件,但要以简单方式处理,并采用避免多重包含结构。多重包含是系统编程祸根。

    72590

    C++指针详解

    以后,每遇到一个指针,都应该问问:这个指针类型是什么指针指向类型是什么?该指针指向了哪里? 指针本身所占据内存区 指针本身占了多大内存?你只要用函数sizeof(指针类型)测一下就知道了。...如果上例中,ptr是被减去5,那么处理过程大同小异,只不过ptr值是被减去5乘sizeof(int),新ptr指向地址将比原来ptr所指向地址向低地址方向移动了20个字节。...指针表达式 一个表达式最后结果如果是一个指针那么这个表达式就叫指针表达式。...在语句ptr=&array中,array代表数组本身。 本节中提到了函数sizeof(),那么我来问一问,sizeof(指针名称)测出究竟是指针自身类型大小呢,还是指针所指向类型大小?...这也证明了指针灵活性。要是你目的就是想看看各个结构成员之间到底有没有填充字节,嘿,这倒是个不错方法。 通过指针访问结构成员正确方法应该是象例十二中使用指针ptr方法。

    49120

    Go通关06:struct和interface,结构体和接口使用

    声明 像普通字符串、整型一样声明初始化var p person ❝声明了一个person类型变量p,但是没有初始化,所以默认使用结构体里字段零值。...❞ 根据字段名称初始化p := person{age:18,name:"无尘"} ❝像这样指出字段名,就可以打乱初始化字段顺序。...也可以只初始化其中部分字段,剩余字段默认使用零值: p := person{age:30} ❞ 字段结构结构体字段可以是任意类型,包括自定义结构体类型: type person struct {...如果一个接口有多个方法,那么要实现接口中所有方法才算是实现了这个接口。...printInfo(&p) 测试发现p指针作为参数函数也是可以正常运行,表明「以值类型接收者实现接口,类型本身和该类型指针类型,都实现了该接口」 那么把接收者改成指针类型: func (p *person

    2.3K30

    golang | Go语言入门教程——结构初始化与继承

    今天我们来学习一下结构本身一些使用方法。 初始化 在golang当中结构初始化方法有四种。...一般我们很少用new关键字,而是直接通过结构体加花括号方式来初始化结构名称 相比于使用new关键字,我们更常用是通过结构名称加上花括号方式来进行初始化。...如果我们不再花括号当中填写参数的话,那么同样会得到一个填充了零值结构体。结构体当中所有属性都会被赋予这个类型对应零值。...type Point struct { x int y int } func main() { p := Point{} fmt.Print(p) } 如果我们想要初始化一个结构指针...总结 到这里,关于golang当中结构初始化与继承介绍就结束了。不知道大家看完这篇有什么样感受,我最大感觉是好像没有第一次看到它时候那么难以接受了XD。

    1.4K20

    C语言基础知识入门(大全)「建议收藏」

    获取数组元素时: 数组名称[元素所对应下标]; 如:初始化一个数组 int arr[3] = {1,2,3}; 那么arr[0]就是元素1。...记住上面这两张图,这就是编程语言中所有变量在内存中样子,不管是 int、char、指针、数组、结构体、对象… 都是这样放在内存。 2、指针是什么啥? 变量放在哪?...如果是 int 型指针那么编译器就会产生提取四个字节指令,char 则只提取一个字节,以此类推。...如果你理解了上面这些内容,那么使用指针一定会更加自如。 3、结构体和指针 结构体内包含多个成员,这些成员之间在内存中是如何存放呢?...依次,可类推出 N 级指针。 所以你明白了吗?同样一块内存,如果存放是别的变量地址,那么就叫指针,存放是实际内容,就叫变量。

    2.3K41
    领券