#include <stdio.h>
#include <stdlib.h>
typedef struct lista {
int val;
struct lista *next;
} lista;
void print(lista *head){
printf("List:");
while(head != NULL){
printf("%d; ", head->val);
head = head->next;}
}
void insert(lista *p,int v){
lista *novo;
if(p == NULL){
novo = malloc(sizeof(lista));
novo->val = v;
novo->next = NULL;
p = novo;}
else{
novo =malloc(sizeof(lista));
novo->val = v;
novo->next = NULL;
p->next = novo;
}
}
int main()
{
lista *head=NULL;
int v;
printf("Write the values u want to put in your list.(write 0 to exit)\n");
while (v != 0){
scanf("%d",&v);
insert(head,v);}
print(head);
}
答えて
機能挿入時に編集するには、ヘッドポインタの参照を渡す必要があります。 は多分のような:それは多分仕事
void insert(lista **p,int v){
lista *novo;
if(*p == NULL){
novo = malloc(sizeof(lista));
novo->val = v;
novo->next = NULL;
*p = novo;}
else{
lista *head = *p;
while(head->next != NULL){
head = head->next;
}
novo =malloc(sizeof(lista));
novo->val = v;
novo->next = NULL;
head->next = novo;
}
}
に挿入(&ヘッド、V)と機能のインサートが変化!ここ
はビンNgyuyenが提供されたコードを説明することができる簡単なプログラムである:ここ
void
set_sp1(int **x) //line #3
{
int *i = malloc(sizeof(int)); //line #4
*i = 10000; //line #5
*x = i; //line #6
}
int
main(void)
{
int *pi1 = NULL; //line #1
set_sp1(&pi1); //line #2
printf("%d\n", *pi1); //line #7
return 0;
}
を説明する:
ライン#1
PI1は、ある整数へのポインタでありますNULLに初期化されます。 この声明ではどういう意味ですか? pi1変数が0XFFFFのメモリアドレスを占めているとします。 現在、pi1の値はNULL値です。
これは整数へのポインタであるため、pi1は最終的には整数のメモリアドレスである必要があります。
pi1
------------
| NULL |
------------
0XFFFF
ライン#2
パラメータはPI1のアドレスを送信しています。 だから。この例では、set_sp1(0XFFFF)と似ています。
回線#3
このパラメータを受信すると、型は、単一のポインタのアドレスが送信されたのでintへの二重のポインタとなります。 xの値は0XFFFFです。
x
------------
| 0XFFFF |
------------
回線#4
変数iは整数へのポインタです。 私は整数に十分なメモリを割り当てます。 iのメモリアドレスが0XAAAAにあるとします。 メモリ割り当てアドレスは0XBBBBです。 iの値は0XBBBBです。 ここで覚えておくべき重要なことがあります。 変数iはローカル変数です。したがって、スタックメモリに常駐します。 この機能が終了すると、スタックメモリが消去されるはずです。 ただし、0XBBBBはヒープメモリにあります。したがって、関数の終わりには一掃されません。
i a memory for int
------------ ------------
| 0XBBBB | | |
------------ ------------
0XAAAA 0XBBBB
ライン#5 この行はアドレス0XBBBB 10000の値を格納するために0XBBBBを間接参照します。
--------
|10000 |
--------
0XBBBB
ライン#6 次に、フィナーレ、*(0XFFFF)= 0XBBBB。 0XFFFFの値がNULLでした。 しかし今は0XBBBBです。
------------
| 0XBBBB |
------------
0XFFFF
再び、0XBBBBに格納された値は10000です。
行#7 ここで、pi1の値はもはやNULLではなく、intのメモリアドレスを持ちます。 これは、このメモリアドレスの値を10000という値で参照している*(0XBBBB)と同じです。
もう一度、ソリューションのBing Nguyenに感謝します。 この説明が少し良い理解を与えることを願っています。
- 1. 誰かがこのエラーで私を助けることができますか?
- 2. 誰かが私を助けることができますか?
- 3. 誰かが次のJAVAコードで私を助けることができます
- 4. 誰かがこのマップで私を助けることができますか?
- 5. 誰も私の下でコードを助けることができますか?
- 6. 誰かが私のここでのエラーを指摘するのを助けることができますか?
- 7. 誰かが私のヘビの動きを助けることができます
- 8. 私のHaskellコードでエラーを見つけることができません
- 9. jQuery - 誰でも私を助けることができます...?
- 10. 誰かが私にこのエラーを理解させるのを助けることができますか:
- 11. 誰かがpreg_matchで私を助けることができますか?
- 12. 誰かがTensorFlowで私を助けることができますか?
- 13. 誰かがpythonネットワークpragramで私を助けることができますか?
- 14. 誰かがワトソンのダイアログで私を助けることができます
- 15. 私はmysqlコードでエラーを見つけることができません
- 16. PDO + SQL誰かがこのPDOで私を助けることができる
- 17. 私のコンテキストクラスを見つけることができません
- 18. 私のデバイスを見つけることができません
- 19. 誰かがmakeMoveメソッドで私を助けることができます
- 20. 誰かがチックタックトーロジックで私を助けることができます
- 21. 誰かがエルグの疑問に私を助けることができます
- 22. 誰が私を助けることができるLINQ
- 23. 誰かがこのエラーメッセージで私を助けることができますか?私はそれを理解することはできません
- 24. Javaコードで私を助けることができます
- 25. 誰でもこのhasNextLine()エラーを助けることができますか?
- 26. 誰でもこのMagentoエラーを助けることができますか?
- 27. 誰かがこの構文エラーprint name.find( 's')で私を助けることができますか?
- 28. 私のコードでメモリリークを見つけることができません
- 29. 私は入力パネルを見つけることができますが、私はツールボックスでそれを見つけることができませんか?
- 30. 誰かが私にこれらのエラーをクリアする手助けをすることができます
エラーが発生した場合は、出力ログにエラーメッセージが表示されます。 –
問題は私がリストを印刷できないことです。私は値を保存しているとは思わない。 –
デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。 – DyZ