c語言中結構體的頭指標相等,會不會把其中覆蓋了

時間 2021-10-17 04:39:55

1樓:匿名使用者

會不會是你理解錯了,這只是建立了個頭結點嘛,頭結點的下一個指向自己而已

2樓:

樓主你好。

rear->nextarc=temp;

rear=temp;

這兩行**的意思是先讓尾節點的nextarc指向temp,然後再將尾節點指標指向temp,相當於在連結串列尾部新增了一個節點。

沒有覆蓋一說,這裡只有指標的賦值。

這段**的意義是:先用temp指標malloc一個arcnode,然後將temp放到連結串列結尾(當然這裡可能不是連結串列,但是rear應該是指示了一個連續結構的最後一個節點)。

rear(指向連結串列結尾) temp(利用temp建立一個新的arcnode)

↓ ↓

□ □

然後rear(將temp賦值給rear指標,rear就指向了連結串列末尾)

↓□→□(原來的尾節點的nextarc指標指向了新的尾節點)

3樓:

我給你寫一個加註釋的連結串列,一看就懂了。

#include

#include

typedef struct nodelinknode,*link;

link creatlist()

r->next=null; //最後節點的next指標為空return h;//返回連結串列的起始節點}

c語言中一個結構體的指標如何指向另一個結構體所申請的記憶體,知道的告訴一下,謝謝了!

4樓:

你想讓node2指向node1所指向的內容,直接node2=node1;就是了。node2->next=node1;是讓node2所知結構體的next指標指向了node1,而node2依然指向原來的結構體。

5樓:匿名使用者

把struct btnode *p[2*m+1],*parent,*next; 中 的

struct 去掉

6樓:

struct btnode *p[2*m+1],*parent,*next;

這句是否錯誤了,應該沒有struct吧。應該這樣btnode *p[2*m+1],*parent,*next;

7樓:匿名使用者

node1=node2->next;

8樓:匿名使用者

試試先將node2->data初始化未零 然後再賦值

c語言 ,一個程式裡兩個不同結構體裡的變數名能相同嗎?用的時候會發生記憶體錯誤嗎?

9樓:gta小雞

訪問結構體的成員變數的方式是結構體變數名.成員變數名或結構體指標名->成員變數名,所以兩個不同的結構體當中的成員變數不會有命名衝突。

c語言中交換兩個結構體的值

10樓:滄海雄風

字串不能用等號賦值

因此你上面註釋掉的三行是不正確的

可以用memcpy 或者 strcpy

反正方式你也看明白了

都是 變數交換

在c語言中。結構體變數之間可以相互賦值嗎?

11樓:問明

可以直接賦值。定義結構體型別,然後用這個型別定義出來的變數就是結構體變數。

c語言在相同型別的變數間賦值時是直接記憶體複製的,即將他們的記憶體進行復制,這裡因為同樣結構體變數,屬於同一種變數,所以賦值時是按照他們的記憶體分佈來直接拷貝的。

舉例:voidmain()

stustu1={0,10};

stutemp={12,88};

stu*p1=&stu1;

stu*p2=&temp;

printf("%d-%d\n",temp.name,temp.num);

temp=stu1;

printf("%d-%d\n",temp.name,temp.num);

temp={10,10};

printf("%d-%d\n",stu1->name,stu1->num);

printf("%ld-\n",&stu1);

printf("%ld-\n",stu1);

printf("%ld-\n",&temp);

printf("%ld-\n",temp);

change(stu1,temp);

temp=stu1;

p2=p1;

printf("%d-%d\n",p2->name,p2->num);

c語言中變數間互相賦值很常見,例如:

inta,b;

a=b;

結構體也是變數(自定義變數),兩個結構體之間直接賦值按道理應該也是可以的吧,將一個結構體物件賦值給另一個結構體物件的。

例:#include"stdio.h"

structtest

inta;

intb;

intc;

char*d;

intmain()

structtestt1={1,2,3,"tangquan"};

structtestt2={0,0,0,""};

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

t2=t1;

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

return0;

12樓:匿名使用者

1、結構體變數是可以直接賦值的。定義結構體型別,然後用這個型別定義出來的變數就是結構體變數。

2、c語言在相同型別的變數間賦值時是直接記憶體複製的,即將他們的記憶體進行復制,這裡因為同樣結構體變數,屬於同一種變數,所以賦值時是按照他們的記憶體分佈來直接拷貝的。

13樓:匿名使用者

可以的,同型別的結構體變數可以。比如:

struct test a,b;

a=b;//這樣可以的。

如果是不同的型別,但是結構體沒資料型別一樣就要用memcpy拷貝記憶體(標頭檔案string.h)。例如:

struct test1 a;

c語言關於兩個結構體中所有值互換的問題

14樓:匿名使用者

~~~~簡單·~~ 假如你要交換結構體a和結構體b的內容,直接定義一個臨時結構體。。

stu t;

t=a;

a=b;

b=t;

即可·~~

C語言中連結串列中的結構體指標變數問題求教

定義結構體指標變數時,只分配儲存指標型別需要的空間,比如listnode p 這裡p有給他分配儲存指標的4個位元組的空間。實際上你是要讓p指向一個結構體空間的,這個結構體空間在哪?可以先定義listnode a 然後 p a 這時p指向一個之前申請分配過空間 編譯器設定過其地址和大小,在棧空間存放著...

C語言,結構體中的陣列怎麼賦值,C語言中結構體中的陣列,不能直接賦值嗎

1 用字元常量逐個初始化陣列。例如 char a 8 把8個字元依次分別賦給c 0 c 7 這8個元素。如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。如果花括號中提供的初值個數 即字元個數 大於陣列長度,則出現語法錯誤。如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元...

c語言中switch結構的使用,C語言中switch結構的使用

秋風依舊好 因為case後面不能接範圍,也就是說case後面是一個確實固定的常量.用下面的方法比較好,include int main 你可以先把範圍用字母或常量代替 再用switch語句 資料 include void main else printf score scanf d s system...