C语言中->是什么意思啊? C语言中'->'是什么意思

C\u8bed\u8a00\u4e2d->\u662f\u4ec0\u4e48\u610f\u601d\u554a\uff1f

\u201c->\u201d\u662f\u4e00\u4e2a\u6574\u4f53\uff0c\u5b83\u662f\u7528\u4e8e\u6307\u5411\u7ed3\u6784\u4f53\u5b50\u6570\u636e\u7684\u6307\u9488\uff0c\u7528\u6765\u53d6\u5b50\u6570\u636e\u3002
\u6362\u79cd\u8bf4\u6cd5\uff0c\u5982\u679c\u6211\u4eec\u5728C\u8bed\u8a00\u4e2d\u5b9a\u4e49\u4e86\u4e00\u4e2a\u7ed3\u6784\u4f53\uff0c\u7136\u540e\u7533\u660e\u4e00\u4e2a\u6307\u9488\u6307\u5411\u8fd9\u4e2a\u7ed3\u6784\u4f53\uff0c\u90a3\u4e48\u6211\u4eec\u8981\u7528\u6307\u9488\u53d6\u51fa\u7ed3\u6784\u4f53\u4e2d\u7684\u6570\u636e\uff0c\u5c31\u8981\u7528\u5230\u201c->\u201d\u3002
\u95ee\u9898\u4e2d\u7684p=p->next \uff0c\u610f\u601d\u662f\u5c06p\u6307\u5411\u7684\u4e00\u4e2a\u7ed3\u6784\u4f53\u5b9e\u4f8b\u4e2d\u7684\u81ea\u6570\u636enext\u8d4b\u503c\u7ed9p\u3002

\u6269\u5c55\u8d44\u6599
struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d *\u6307\u9488\u540d;//\u7ed3\u6784\u4f53\u6307\u9488
struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d *\u6307\u9488\u540d = &\u4e00\u4e2a\u7ed3\u6784\u4f53\u7684\u540d\u5b57;//\u7ed3\u6784\u4f53\u6307\u9488\u5e76\u8d4b\u521d\u503c
struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d *\u6307\u9488\u540d = new struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d;//\u7ed3\u6784\u4f53\u6307\u9488\u5e76\u7528new\u7533\u8bf7\u5185\u5b58
struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d *\u6307\u9488\u540d =(struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d *)malloc(sizeof(struct \u7ed3\u6784\u4f53\u7c7b\u578b\u540d))//\u7ed3\u6784
\u4f53\u6307\u9488\u5e76\u7528malloc\u7533\u8bf7\u5185\u5b58 \u4f7f\u7528\u5e94\u5305\u542b\u5934\u6587\u4ef6stdlib.h
//\u5bf9\u8c61\u6307\u9488\u7684\u5b9a\u4e49\u65b9\u6cd5\u7565\u540c\u3002
\u53c2\u8003\u8d44\u6599\uff1a\u767e\u5ea6\u767e\u79d1 ->

->是一个整体,它是用于指向结构体、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依靠易变工具来生成链表。

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



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

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

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

扩展资料:

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

定义与声明:

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



->是一个整体,它是用于指向结构体、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++,链表和指针必须熟练掌握!

->是一个整体,代表“指向”的意思。
例如有定义
struct aaa
{
int b;
struct *next;
}c,d,*p;
在上面的定义中,c和d是变量,它们的类型是aaa,p是一个指向aaa类型的指针变量。
如果
p=&c;
则把变量c的地址赋给p,此时,p指向c。
如果
p->next=d;
则d就是c的后继,此时p指向c,p->指向d,
如果
p=p->next ;
则p就指向了d

->是一个整体,表示从指针访问结构体的成员变量
p = p->next
这常常用于结构体单链表,表示p指向下一个节点

  • c璇█涓鐨- i--鏄粈涔堟剰鎬?
    绛旓細-i--灏辨槸鍏堣繘琛宨--杩愮畻锛岀劧鍚庡啀鍙栧叾璐熷笺備笅闈㈡槸C璇█杩愮畻绗︾殑浼樺厛绾э細--涓庤礋鍙峰浜庡悓涓浼樺厛绾э紝鑰岀粨鍚堟柟鍚戞槸浠庡彸鍒板乏锛屾墍浠ユ槸鍏堣繘琛宨--杩愮畻锛屽啀鍙栬礋鍙枫俰--灏辨槸鎶奿鑷噺1锛屼絾鏄畠鐨勮繑鍥炲煎嵈鏄痠锛岃繖灏辨槸i--涓--i鐨勫尯鍒紝--i鐨勮繑鍥炲煎氨鏄痠-1浜嗐傚叿浣撶湅涓嬮潰涓涓▼搴忥細include<stdio.h>...
  • c璇█杈撳嚭-%f涓'-'鍙蜂綔鐢
    绛旓細鍗犱綅绗︺%d,%e,&u,%f,%c渚嬪 printf(鈥滆繖涓暟鏄%d鈥,123);涔熷氨浼氳緭鍑鸿繖涓暟鏄123.鍗崇敤%d鍗犱綇浜嗚繖涓綅缃紝璇ヤ綅缃殑鍊兼槸鍚庨潰鐨勫唴瀹广倂oid main(){ } 杩欓噷鐨剉oid琛ㄧず鍑芥暟杩斿洖鍊间负绌恒俧loat a琛ㄧず瀹氫箟涓涓彉閲廰鏄竴涓诞鐐瑰瀷鏁般俢har b琛ㄧず瀹氫箟涓涓彉閲廱鏄竴涓瓧绗﹀瀷鏁般&u鏄痷鐨勫湴鍧锛屽父...
  • 鍏充簬C璇█ C閫夐」涓殑"."鍜"-"鏄粈涔堟剰鎬
    绛旓細杩欎釜闂鏄繖鏍风殑銆俿hort _a=1-.1e-1;瀹為檯涓婃槸锛歴hort _a=1-0.1e(-1);浠g爜涓紝鏍规嵁C璇█鐨勮娉曪紝鍋氫簡涓浜涚渷鐣ワ紝灏辫繖鏍蜂簡銆.1 瀹為檯涓婂氨鏄 0.1锛屼互灏忔暟鐐瑰紑澶寸殑 鍙兘鏄暟鍊硷紝鎶婂墠闈㈢殑0鐪佺暐浜嗭紱e-1 瀹為檯涓婂氨鏄痚(-1)锛 鍏舵剰涔夋槸 鍗佺殑璐熶竴娆℃柟 ...
  • c璇█涓+=鍜-=鏈変粈涔堝尯鍒?
    绛旓細鍦C璇█涓锛+=鍜-=鏄袱涓祴鍊艰繍绠楃锛屽垎鍒〃绀哄姞绛変簬鍜屽噺绛変簬銆+=杩愮畻绗︾敤浜庡皢涓涓煎姞涓婂彟涓涓煎苟灏嗙粨鏋滆祴鍊肩粰绗竴涓笺備緥濡傦紝a += b 绛変环浜 a = a + b锛岃〃绀哄皢鍙橀噺a鐨勫煎姞涓婂彉閲廱鐨勫硷紝鐒跺悗灏嗙粨鏋滆祴鍊肩粰鍙橀噺a銆傝繖涓繍绠楃鍙互鐢ㄤ簬浠讳綍鍙璧嬪肩殑鏁版嵁绫诲瀷锛屼緥濡傛暣鍨嬨佹诞鐐瑰瀷銆佸瓧绗﹀瀷...
  • c璇█涓 ==, ++,--,[ ]鏄粈涔堟剰鎬
    绛旓細鑷1鐨勬剰鎬濓紝姣斿 int i=1; i++鍚巌鐨勫煎氨鍙樹负浜2銆傚彲浠ユ彁楂樼▼搴忕殑鏁堢巼锛岀紪璇戝櫒鍦ㄨ娉曠炕璇戠殑鏃跺欐渶缁堜細鐢ㄩ嗘尝鍏板紡鏉ヨ〃绀猴紝涔熷氨鏄炕璇戞垚x+=a鐨勫舰寮忋傛墍浠ヤ功鍐欑殑鏃跺欐妸x=x+a 鍐欐垚x+=a璇翠竴涓嬪師鐞嗭細x+=a绛変环浜 x=x+a銆
  • c璇█鐨-- n琛ㄧず浠涔堟剰鎬濆晩?
    绛旓細鍦C璇█涓锛--n鏄竴涓嚜鍑忚繍绠楃锛岃〃绀哄皢鍙橀噺n鐨勫煎噺1銆備緥濡傦細鑷噺杩愮畻绗﹂氬父鐢ㄤ簬寰幆鎺у埗锛屼緥濡傦細鍦ㄨ繖涓緥瀛愪腑锛寃hile寰幆鐨勬潯浠舵槸i灏忎簬0锛屾瘡娆″惊鐜兘灏唅鐨勫煎噺1锛岀洿鍒癷鐨勫煎彉涓0锛屽惊鐜粨鏉熴♡♡ 鏈夊府鍔╁埌鐨勮瘽锛岄夯鐑﹂噰绾冲摝锛♡♡...
  • C璇█涓+#-鍒嗗埆浠h〃鍟ユ剰鎬
    绛旓細澶嶅悎璧嬪艰繍绠楃銆傛槸C璇█涓鐨勪竴绉嶅鍚堣祴鍊艰繍绠楃锛屼唬琛ㄩ澶勭悊鍛戒护鍚э紝浜庝笉鍚岀殑鍏抽敭瀛楁惌閰嶏紝鏈変笉鍚岀殑鎰忔濄傚儚#include浠h〃鍦ㄩ澶勭悊鏃跺皢鍏跺悗鐨勬枃浠跺寘鍚埌绋嬪簭涓幓#define鍒欏畾涔変竴浜涘父閲忥紝渚夸簬浠ュ悗鐨勪慨鏀癸紝鍙槸鏀硅繖涓澶勩
  • c璇█涓--c鏄粈涔堟剰鎬
    绛旓細--c鏄c璇█涓鐨勪竴涓噸瑕佽繍绠楃锛屽畠浠h〃鐨勬槸c鐨勯掑噺鎿嶄綔銆傞掑噺鎿嶄綔灏辨槸灏嗗彉閲忕殑鍊煎噺1锛屽彲浠ョ敤浜庢暣鏁般佸瓧绗︺佹诞鐐规暟绛夋暟鎹被鍨嬶紝琚箍娉涘簲鐢ㄤ簬寰幆缁撴瀯銆佹暟缁勬搷浣溿佹寚閽堣繍绠楃瓑鏂归潰銆備竴鑸岃█锛岄掑噺鎿嶄綔涓庨掑鎿嶄綔骞朵笉鐩稿悓锛岄掑噺鎿嶄綔浼氫娇鍙橀噺鐨勫煎噺1锛岃岄掑鎿嶄綔鍒欎細浣垮彉閲忕殑鍊煎鍔1銆傚湪c璇█涓紝閫掑噺鎿嶄綔...
  • C璇█鐨勮繍绠楃鐨勪紭鍏堢骇鏄粈涔?
    绛旓細涔熺О涓烘潯浠惰繍绠楃鍙凤紝鏄C璇█涓鍞竴鐨勪竴涓笁鐩繍绠楃锛岀粨鍚堥『搴忔槸浠庡彸寰宸︺9銆佺涔濈骇锛=銆+=銆-+銆*=銆/=銆%= 杩欎簺杩愮畻绗︿篃鍙仛璧嬪艰繍绠楃锛岄櫎姝や箣澶栵紝>>=銆<<=銆&=銆乛=銆亅=杩欎簺璧嬪艰繍绠楃涔熷湪杩欎竴绾у埆鍐咃紝缁撳悎椤哄簭鏄粠鍙冲線宸︺10銆佹渶浣庣骇锛氾紝閫楀彿杩愮畻绗︿篃绉颁负椤哄簭姹傚艰繍绠...
  • C璇█涓->鏄粈涔堟剰鎬濆晩?
    绛旓細鈥->鈥濇槸涓涓暣浣擄紝瀹冩槸鐢ㄤ簬鎸囧悜缁撴瀯浣撳瓙鏁版嵁鐨勬寚閽堬紝鐢ㄦ潵鍙栧瓙鏁版嵁銆傛崲绉嶈娉曪紝濡傛灉鎴戜滑鍦C璇█涓瀹氫箟浜嗕竴涓粨鏋勪綋锛岀劧鍚庣敵鏄庝竴涓寚閽堟寚鍚戣繖涓粨鏋勪綋锛岄偅涔堟垜浠鐢ㄦ寚閽堝彇鍑虹粨鏋勪綋涓殑鏁版嵁锛屽氨瑕佺敤鍒扳->鈥濄傞棶棰樹腑鐨刾=p->next 锛屾剰鎬濇槸灏唒鎸囧悜鐨勪竴涓粨鏋勪綋瀹炰緥涓殑鑷暟鎹畁ext璧嬪肩粰p銆
  • 扩展阅读:刺激gt是什么意思 ... c语言中&的用法 ... 女人说gt啥意思 ... c语言ll 和&&的运算 ... &gt 表示什么意思 ... 网络语言gt啥意思 ... &是什么意思 ... c语言&&的意思 ... c语言 a 什么意思 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网