当我尝试向下编译代码时,可执行文件无法打开。我也尝试调试,但在viewNode行的printf中遇到此错误:无法执行MI命令:-data-evaluate-expression(l)-> info来自调试器后端的错误消息:无法访问地址0xeb的内存
现在,我了解到我正在尝试访问不应访问的存储位置,但是问题出在哪里呢?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct char_node *char_list;
struct char_node{
char info;
char_list next;
}char_node;
char_list makesNode(void);
char_list makesValueNode(char value);
char_list makesList(char_list l, char nome[]);
void viewNode(char_list l);
void viewList(char_list l);
int main(){
char_list nuovo;
char nome[] = "Ugo";
makesList(nuovo, nome);
if(nuovo != NULL)
viewList(nuovo);
return 0;
}
char_list makesNode(void){
return (char_list)malloc(sizeof(struct char_node));
}
char_list makesValueNode(char value){
char_list li = NULL;
li = makesNode();
li -> info = value;
li -> next = NULL;
return li;
}
char_list makesList(char_list nuovo, char nome[]){
char_list head = NULL;
int l = strlen(nome);
l = l - 1;
while(l >= 0 ){
nuovo = makesValueNode(nome[l]);
if(nuovo != NULL){
nuovo -> next = head;
head = nuovo;
l = l - 1;
}
}
return nuovo;
}
void viewNode(char_list l){
printf("%c", l->info);
}
void viewList(char_list l){
while(l != NULL){
viewNode(l);
l = l -> next;
}
}
makeList
返回char_list
指针,但您没有将其分配给变量。
而且,makesList
从不使用nuovo
参数,因此不需要它。
因此应该是:
int main(){
char nome[] = "Ugo";
char_list nuovo = makesList(nome);
if(nuovo != NULL)
viewList(nuovo);
return 0;
}
char_list makesList(char nome[]){
char_list nuovo;
char_list head = NULL;
int l = strlen(nome);
l = l - 1;
while(l >= 0 ){
nuovo = makesValueNode(nome[l]);
if(nuovo != NULL){
nuovo -> next = head;
head = nuovo;
l = l - 1;
}
}
return nuovo;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句