问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

在C语言中“%—3d”是什么意思啊?

提问网友 发布时间:2023-11-08 15:03
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
5个回答
热心网友 回答时间:2024-05-15 13:02
->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.
举个例子:
struct Data
{
int a,b,c;
}; /*定义结构体*/
struct Data * p;/*定义结构体指针*/
struct Data A = {1,2,3};/*声明变量A*/
int x;/*声明一个变量x*/
p = &A ; /*让p指向A*/
x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/*由于此时p指向A,因而 p->a == A.a,也就是1*/

对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{
int a;
struct Data * next;
};/*定义结构体*/
…………
main()
{
struct Data * p;/*声明指针变量p*/
……
p = p->next;/*将next中的值赋给p*/
}
链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。
什么是变量?所谓变量,不要浅显的认为会变得量就是变量。套用我们院长的问话:“教室变不变?”变,因为每天有不同的人在里面上课,但又不变,因为教室始终在那,没有变大或变小。这就是变量:有一个不变的地址和一块可变的存储空间。正常情况下,我们只看到变量这个房间里面的东西,也就是其内容,但不会关注变量的地址,但是C语言的指针,就是这个房间的地址。我们声明变量就相当于盖了间房子存放东西,我们可以直接观看房子里的东西,而声明指针,就是相当于获得了一个定位器,当用指针指向某个变量时,就是用指针给变量定位,以后我们就可以用指针找到他所“跟踪”的变量并可以获得里面的内容。
那结构体呢?结构体就相当于是有好几个房子组成的别墅,几个房子绑定在一起使用。假设现在有很多这种别墅分布在一个大迷宫里,每间别墅里都有一间房子。里面放了另一个别墅的位置信息,现在你手拿定位器找到了第一栋别墅,从里面得到了你想要的东西(链表的数据部分),然后把下一栋别墅的位置计入你的定位器(p = p->next),再走向下一栋别墅……如此走下去,知道走到某地下一栋别墅信息没有了(p->next == NULL),你的旅行结束。这就是链表一次遍历的过程。现在你能明白 p=p->next的含义了吧!
写了这么多。希望你能明白。
如果想学好c和C++,链表和指针必须熟练掌握!
热心网友 回答时间:2024-05-15 13:02

“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。

换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。

问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。

扩展资料:

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

定义与声明:

结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

热心网友 回答时间:2024-05-15 13:03

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.

举个例子:

struct Data

{

int a,b,c;

}; /*定义结构体*/

struct Data * p;/*定义结构体指针*/

struct Data A = {1,2,3};/*声明变量A*/

int x;/*声明一个变量x*/

p = &A ; /*让p指向A*/

x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/

/*由于此时p指向A,因而 p->a == A.a,也就是1*/

对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:

struct Data

{

int a;

struct Data * next;

};/*定义结构体*/

…………

main()

{

struct Data * p;/*声明指针变量p*/

……

p = p->next;/*将next中的值赋给p*/

}

链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。

扩展资料:

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。

每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。

由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。

但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。

链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。

链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。

链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。

程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。

参考资料:链表–百度百科

热心网友 回答时间:2024-05-15 13:04

%3d 表示输出3位整型数, 不够3位右对齐。%2d 表示输出2位整型数, 不够2位右对齐。

格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。在"%"和字母之间插进数字表示最大场宽。

比如%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为7,小数点占一位, 不够9位右对齐。

%8s表示输出8个字符的字符串, 不够8个字符右对齐。如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。

扩展资料:

printf()函数一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf("<式样化字符串>",<参数表>);

其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%"开端, 后跟一个或几个规定字符, 用来确定输出内容式样。 

参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用","分开, 且顺序逐一对应, 不然将会出现意想不到的过失。

注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。

参考资料:

百度百科-printf

热心网友 回答时间:2024-05-15 13:04
%3d的意思是,给当前输出项默认最少分配三个输出位置,如果输出的内容少于三个字符,那么在其前面补上空格,如果多于三个字符,那么安原文输出 printf("%3d",2); 结果就是:空格空格2 printf("%3d",22); 结果就是:空格22 printf("%3d",1234); 结果就是:1234 而%-3d正好相反,是在输出项后面补上空格 如: printf("%-3d",2); 结果就是:2空格空格 以此类推 明白了么?

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 给小孩起名,父亲姓张,母亲姓杨男孩,2009年2月19日(农...1 被法院冻结个人账户出现可用余额负数正常吗24 三十而立究竟立的是什么呢? “三十而立”的“立”到底是立什么4 德高广告(上海)公司怎么样 客户经理工资待遇如何?请知情的朋...1 天下3为什么摆摊挂机老是会掉线?大家有这种情况么?到底是什么问题 有... 在家拼音是什么1 找私人月嫂好还是通过家政公司好141 “圈在家里”的“圈”读音是什么?1 我知道重力势能增加了,但为什么重心位置会变高,拉力不是往下吗...10 写篇关于感恩题材的作文145 一千人的qq群可以转给不是年会或是会员的qq号吗1 为什么日本是世界上唯一不承认第二次世界大战结果的国家~4 能不能几个人一起管理?1 我知道重力势能增加了,但为什么重心位置会变高,拉力不是往下吗...10 腾讯游戏账户 里面的钱怎样充到游戏里3 我想在弹弹堂里充钱,充多少就可以了? (最好能说明一下是怎么...8 有什么办法可以把手机喇叭弄坏6 gb&#47;t20234.3是会么规格1 日本战败投降为什么不赔款?3 谁可以告诉我写感恩作文新颖题材?3 关与二战日本战犯的问题6 日本战败投降,各国纷纷接受日本投降,为何唯独澳大利亚不接受日...35 为什么二战日本投降时,中国人民没有趁机报复?5 手机木马病毒怎么删除1 电脑杀毒软件目前最好的是哪种?1687 下图是东北地区山河分布示意图和2010年粮食生产量构成百分比...1 成都市限号车可以在三环路行驶吗436 画室内的壁画一般用什么颜料比较好10 弹弹堂s怎么充值最方便,我的app store里也没有钱2 请帮我取一个男孩的名字,父亲姓张,母亲姓杨,名字中要带有属木... 12款经典轩逸怎么没有水温表8 重心的平衡位置在哪,为什么重心偏离平衡位置会上升? 做了一个PHP项目,请问它的服务器和代码操作必须在同一个操作... 如何注册第二个? 怎样注册第二个啊? 我喜欢的名著中一个人物400字作文818 哈维与阿尔萨德续约几年?2 火锅店与郑恺方和解,双方达成了什么样的和解方案
Top