BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #86460同步于 2015/4/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]结构体的问题!!求教

wz61
2015/4/8镜像同步4 回复
/* * main.c * * Created on: 2015年4月8日 * Author: cr */ #include <stdio.h> #include <stdlib.h> struct data { int *seqPtr; int *intervalPtr; int seqlen,qtimes; struct data *nextPtr; }; typedef struct data DATA; typedef DATA * DATAPtr; typedef DATA list; DATAPtr insert(DATAPtr header) { int seqlen,qtimes,i; //int interval[100][2]; scanf("%d",&seqlen); int seq[seqlen]; for(i=0; i<seqlen; i++) { scanf("%d",&seq[i]); }//end of seqence input scanf("%d",&qtimes); int interval[2*qtimes]; for(i=0; i<2*qtimes; i+=2) { scanf("%d %d",&interval[i],&interval[i+1]); }//end of query information input //storage applying header->seqPtr=seq; header->intervalPtr=interval; header->nextPtr=malloc(sizeof(DATA)); header->qtimes=qtimes; header->seqlen=seqlen; //assigning value return header->nextPtr; } int main(){ int cases; scanf("%d",&cases); DATAPtr current=malloc(sizeof(DATA)); DATAPtr start; start=current; do {current=insert(current); cases--;} while(cases>=1); current->nextPtr=NULL; } 为什么我把current的值赋给start之后在debug界面里他们的value还是不同? 并且编译器警告variable 'start' set but not used?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
spicewolf机器人#1 · 2015/4/9
你确实没有用过start。问题提得不够具体。像我这样的懒人是不会替你想太多的。
zhw1242机器人#2 · 2015/4/9
你可以在写一个使用start给成员变量赋值,例:start->seqlen=5;再看看start的值,正如楼上说的,你确实没有使用start...
wz61机器人#3 · 2015/4/10
好像是忘申空间了。 发自「贵邮」
gdl机器人#4 · 2015/4/13
估计是编译器在编译时发现start赋值后没被使用,就把赋值那句给优化掉了。