请问为何动态分配的顺序表无法输出

#include<stdio.h>
#include<stdlib.h>
//动态分配单链表的增删改查
typedef struct lnode1{
	int *data;
	int maxsize;
	int length;
}lnode1;
void kuorong(lnode1 &l){
	//默认每次扩容十个 
	l.data=(int*)malloc(sizeof(int)*10);
	l.length=0;
}
void chuangjian(lnode1 &l){
	l.length=0;
	l.maxsize=50;
	for(int i=0;i<50;i++){
		l.data[i]=i;
		l.length++;
	}
} 
void printlist(lnode1 l){
	for(int i=0;i<l.length;i++)
	
		printf("123") ;
		printf("\n");
	
} 
int main(){
	lnode1 l;
	kuorong(l);
	chuangjian(l);
	printf("%d",l.length);
	printlist(l);
	return 0;
} 

该代码无法输出运行结果什么都没有,有没有大佬知道怎么解决

你这是用的C还是C++??

我这边跑了一下

C的话啥都没有,因为有错误

C++的话我这边可以运行但是很奇怪,你自己再检查一下吧

数组越界,你第一个函数只给了l.data分配了10个Int,但是你第二个函数里面for循环i怎么能取到50呢?

还有使用malloc后不free的话会内存泄漏

额,我帮你稍微改了一下

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode1 {
	int* data;
	int maxsize;
	int length;
}lnode1;
void kuorong(lnode1 &l) {
	l.data = (int*)malloc(sizeof(int) * 50);
	l.length = 0;
}
void chuangjian(lnode1 &l) {
	l.length = 0;
	l.maxsize = 50;
	for (int i = 0; i < 50; i++) {
		l.data[i] = i;
		l.length++;
	}
}
void printlist(lnode1 l) {
	for (int i = 0; i < l.length; i++) {
		printf("123");
		printf("\n");
	}
}
int main() {
	lnode1 l;
	kuorong(l);
	chuangjian(l);
	printf("l.length = %d\n", l.length);
	printlist(l);
	free(l.data);
	return 0;
}

 

而且,这玩意是单链表???写的奇奇怪怪的,还是推荐用指针,写个完整的增删查改就明白了

谢谢大佬们