1樓:匿名使用者
c 語言中的結構當然可以包含指向自己的指標; [k&r2, 第 節] 的討論和例子表明了這點。 nodeptr 例子的問題是在宣告 next 域的時候 typedef 還沒有定義。
為了解決這個問題, 首先賦予這個結構一個標籤 (`struct node'')然後, 宣告 ``next'' 域為 ``struct node *'或者分開 typedef 定義和結構定義, 或者兩者都。以下是一個修改後的版本:
struct node ;
typedef struct node *nodeptr;
至少還有三種同樣正確的方法解決這個問題。
在用 typedef 定義互相引用的兩個結構時也會產生類似的問題, 可以用同樣的方法解決。
2樓:千鋒教育
c 語言中的結構當然可以包含指向自己的指標; nodeptr 例子的問題是在宣告 next 域的時候 typedef 還沒有定義。為了解決這個問題, 首先賦予這個結構一個標籤 (「struct node」)。然後,宣告 「next」 域為 「struct node *」或者分開 typedef 定義和結構定義。
以下是一個修改後的版本:
struct node ;
typedef struct node *nodeptr;
至少還有三種同樣正確的方法解決這個問題。在用 typedef 定義互相引用的兩個結構時也會產生類似的問題, 可以用同樣的方法解決。
c語言如何在結構體中定義指向自身資料結構的指標?
3樓:匿名使用者
上樓錯誤:
在定義*pa的時候,編譯器根本就不知道還有a這個型別所以應該是這樣的。
typedef struct a
a;象定義連結串列的結構的時候有這樣:
typedef struct lq
lqnode;
一個道理。
4樓:社會人二
這是連結串列,搜一下連結串列的相關知識你就會了。
如果結構中含有指標,則可以定義一個指向該結構的指標嗎,為什麼我定義了這個指標但是提示我沒有宣告
5樓:匿名使用者
你s也要分配記憶體,先用malloc給s分配記憶體。
c語言結構連結串列指標問題。為什麼我的指標不能指向陣列?
6樓:匿名使用者
字串是陣列,不能用等號賦值,需要採用strcpy()函式#include //引用字串函式標頭檔案。。。strcpy( pnew->name, name );
strcpy( pnew->address, address);
strcpy( pnew->car_num, car_num);
7樓:牛牛牛不牛
字元陣列 賦值的時候,陣列名 其實就是陣列的首地址,直接 等號賦值顯然不行,可以使用 memcpy()函式,或者單個字元迴圈 等號賦值即可。
c語言中定義連結串列必須要指向下一個元素的指標麼?
8樓:匿名使用者
沒有next的指標應該不算連結串列吧。這個是約瑟夫問題。讓連結串列的最後一個節點的next指向連結串列的第一個節點,形成迴圈連結串列。也就是說不要頭結點了。然後就很容易實現啦。
9樓:匿名使用者
沒有next指標你沒法把多個節點連線起來啊,那就不叫連結串列了// s:~連結串列實現。
#include
typedef struct list list, *node;
int main()
jc[i-1].t = jc;
prev = jc + 13 - 1;
next = jc;
i = 0;
while(prev !=next) else}printf("survivor:%d", prev->id);
return 0;}
在c語言中struct結構體裡面 不能定義函式麼?
10樓:匿名使用者
不可以的,結構體一般都只有資料成員,而沒有函式成員。也就是像int、double這樣的資料型別,函式需要單獨定義。如果必需使用函式,就得用c++中的類概念了。
11樓:匿名使用者
c中不能,c++裡可以在結構體內定義函式,用法和class定義類是一樣的,說穿了struct 和 class用法相同,但要注意的一點是,struct預設的是public型別,而class預設的是private型別的。
12樓:匿名使用者
是的。結構體只能儲存資料。在c++中,引入了類的概念,類中既可以宣告變數,也可以定義函式。
13樓:匿名使用者
不能。結構體是一種複合資料型別只能存放資料 不過你可以嘗試定義一個指向函式的指標看看。
14樓:那些忘記的什麼
linux. c可以,手機打字不方便,在結構體中定義指標函式。
c難道不是水平結構嗎
15樓:永遠的
首先b,c是兩個不同的群落,一個是水生群落,一個是陸地群落,而群落結構這個概念是建立在同一群落中的,所以不是水平結構 。這兩個群落各有明顯的垂直分佈,尤其是c群落的分佈在書中是有舉例的,所以兩個群落各體現垂直結構,c項正確。望採納。
c語言結構體指標成員所指向的變數如何訪問?
16樓:匿名使用者
第一種寫法:
(*a).p=&b;
.的優先順序高於*,(pointer)兩邊的括號不能少。如果去掉括號寫作*pointer.
membername,那麼就等效於*(,這樣意義就完全不對了。
第二種寫法:
a->p=&b;
->是一個新的運算子,習慣稱它為「箭頭」,有了它,可以通過結構體指標直接取得結構體成員;這也是->在c語言中的唯一用途。
結構體是一種資料型別,是一種建立變數的模板,編譯器不會為它分配記憶體空間,就像 int、float、char 這些關鍵字本身不佔用記憶體一樣;結構體變數才包含實實在在的資料,才需要記憶體來儲存。下面的寫法是錯誤的,不可能去取一個結構體名的地址,也不能將它賦值給其他變數。
17樓:匿名使用者
結構體指標成員所指向變數,這個說法理解起來有點困難。
從字面意思上回看斷句,有。
如下答幾種可能:
首先定義一個包含所有可能情況的結構體:
struct test
;struct test t1, *t2;
1 結構體/指標成員/所指向的變數。
結構體中有指標成員,然後要訪問這個結構體成員指向的變數值。
那麼可以*(這種方式對p取值。
2 結構體指標/成員/所指向變數。
這種情況有兩種方法可以訪問:
*(t2->p)
或者*(*t2).p)
效果是一樣的。
3 描述有誤,實際為:
結構體指標所指向/成員變數。
同樣有兩種方法可以使用:
t2->p
或者(*t2).p
18樓:匿名使用者
因為復int是一個值型別的,制所以不能直接賦值給p(p是int指標型別)。因此二樓加括號是對的。通過取p的地址轉化成對應的指標,然後直接把b賦值給它。
c語言中for迴圈的例題,一個c語言中for迴圈的例題
c語言中的for迴圈語句使用最為靈活,不僅可以用於迴圈次數已經確定的情況,而且可以用於迴圈次數不確定而只給出迴圈結束條件的情況,它完全可以代替while語句.for 表示式 1 表示式 2 表示式 3 語句 它的執行過程如下 1 先求 表示式1.2 求 表示式2 若其值為真 值為非0 則執行for語...
c語言中一道題不明白什麼意思C語言中一道題,不明白什麼意思
分段函式求值內容.main 分段來的自,bai也du就zhi 是dao if x 1 else if 1 x 10 else 其實,這是三複條選擇語 制句,你從右邊往左邊讀就行了,當x滿足。時,就執行對應左邊的函式表示式,把x值帶如對應的函式算就行了。你要明白,你帶入一次,只能從三個中選一個做運算,...
C語言編寫函式,如何在C語言中定義一個函式?
這個hanshu 用來從20個隨機數中推匯出15個不重複的隨機數 正數 演算法邏輯有問題。看這一句 a i a i 1 想做什麼?它在內迴圈裡 迭代數是j不是i 當前後兩數相同時它總是把後一個數賦值給前一個數,猜想你大概是想不斷的把後面的數賦給i位置的數然後做相等測試,而這裡的i就沒有動 那個con...