看保存在什么空间里吧,,
这个原理的东西,有些太底层次了
看判断那儿是不是不对
不会报错,两个都可以使用,int本身也可以继续使用
换一个编译器吧
可以啊
这样就空格了
scanf("%d $d",a, b);
递归效率高
看视频作者的定义,在链表结构体中定义的next指针,这个next指针的类型就是自身结构体的类型,也就是说next++,会自动转到下一个结构体的头地址。
看了半天,才发现在倒数第四行代码少了个“=”号?
您看是这样哈,
首先定义一个结构体,这个结构体 定义一个*head,然后,head = &a。那么其实就是让head的地址指向&a,您可以用gdb来看看具体的 地址信息,就明白了。
这是两个问题,首先head在n=1的时候就把p1赋值给它,相当于head指向链头;然后p2的两次赋值含义不一样,因为p2保存的是上一次的节点,p2->next=p1表示把上次保存节点的next指针指向这次分配的节点p1,p2=p1表示用p2把这次产生的节点p1保存起来。
char name 根本放不了"xiong",溢出了都。 char 单字节,只能放一个byte
看着应该是对的
我也是这么认为的
PPT
大哥,你忘了给 p1->num 补上取地址运算符 &。即:
scanf_s("%d,%d",p1->num,&p1->garde);
应改为:
scanf_s("%d,%d",&p1->num,&p1->garde);
int main(){ struct weapon *l,*k; *l=create(); while(l->next!=NULL){ printf("%d,%d\n",l->price,l->atk); k=l->next; l=k; } printf("%d,%d\n",l->price,l->atk); return 0;
}
ADD MONEY
在VI的界面,按ESC,然后,输入 :wq 回车,就保存了的
create前面加*代表这是一个指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针(即地址值)。
你的问题模棱两可,感谢老天爷,我还是理解了。
你是说,初始化了三个节点吧?或者说是初始化了节点中的三组值?
我两个种形式都回答一下吧。
以静态链表为例:
//创建节点
struct node{
int score;
char name;
int number;
double whatever;
int *pnext;
}n1, n2,n3;
//链表初始化
struct node *phead = &n1;
n1.pnext = &n2
n2.pnext = &n3;
n3.pnext = NULL;
那么,如果你现在在节点n1中输入了前三个值(第四个没有输入),那么答应前三个就行了啊:
printf(“%d\n%s%d”,n1.score, n1.name, n1.number);
如果三个节点的这三个变量都都要输出,你循环输出就行了呀:
struct node *pTmp = NULL;
struct node *pCur = &n1;
for( i = 0 ;i < 3; i++){
printf(“%d\n%s%d”,pCur->score, pCur->name, pCur->number);
struct node *pTmp = pCur->pnext; //取下一个节点
pCur = pTmp;
}
打字不易,我是NPU张小戈,请采纳。