新手C语言数据结构学习
想问一下各位大佬为什么我这段代码没有输出啊。#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef struct{
int *data;
int MaxSize, length;
} SeqList;
void InitList(SeqList L){
L.data = (int *)malloc(InitSize * sizeof(int));
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(SeqList L,int len)
{
int *p = L.data;
L.data = (int *)malloc((L.MaxSize + len) * sizeof(int));
for (int i = 0; i < L.length;i++)
{
L.data = p;
}
L.MaxSize = L.MaxSize + len;
free(p);
}
int main()
{
SeqList L;
InitList(L);
for (int i = 0; i < 5;i++)
{
L.data = 2*i;
L.length++;
}
IncreaseSize(L, 5);
for (int i = 0; i < L.length;i++)
{
printf("%d", L.data);
}
printf("MaxSize is :%d", L.MaxSize);
return 0;
}
输出结果就是:PS E:\C项目\data struct\SeqList> cd "e:\C项目\data struct\SeqList\" ; if ($?) { gcc SeqList.c -o SeqList } ; if ($?) { .\SeqList }
没有别的了
真真想不明白 你传整个结构体不如传 指针
不会改变实参结构体的值
两个L.data 的地址都不会是一样 只是名字一样白分配
https://blog.csdn.net/weixin_51420051/article/details/110946597 InitList的参数改成SeqList *L tian1234 发表于 2021-6-10 14:05
InitList的参数改成SeqList *L
另一个也改了哈 万千只cnm 发表于 2021-6-10 13:56
你传整个结构体不如传 指针
不会改变实参结构体的值
两个L.data 的地址都不会是一样 只是名字一样白 ...
我改成传递指针的输出也不一样
PS E:\C项目\data struct\SeqList> cd "e:\C项目\data struct\SeqList\" ; if ($?) { gcc shishi.c -o shishi } ; if ($?) { .\shishi }
9966736 0 9961808 0 8
MaxSize is :15 tian1234 发表于 2021-6-10 14:07
另一个也改了哈
我改成传递指针的输出也不一样
PS E:\C项目\data struct\SeqList> cd "e:\C项目\data struct\SeqList\" ; if ($?) { gcc shishi.c -o shishi } ; if ($?) { .\shishi }
9966736 0 9961808 0 8
MaxSize is :15 them0b 发表于 2021-6-10 15:23
我改成传递指针的输出也不一样
PS E:\C项目\data struct\SeqList> cd "e:\C项目\data struct\SeqList\"...
哦不对,结果还是像之前一样没有输出 them0b 发表于 2021-6-10 15:22
我改成传递指针的输出也不一样
PS E:\C项目\data struct\SeqList> cd "e:\C项目\data struct\SeqList\"...
不对不对,结果还是像之前那样没有输出
them0b 发表于 2021-6-10 15:22
我改成传递指针的输出也不一样
PS E:\C项目\data struct\SeqList> cd "e:\C项目\data struct\SeqList\"...
里面内容也要改呀
调用也要取地址& 万千只cnm 发表于 2021-6-10 15:47
里面内容也要改呀
调用也要取地址&
这个我明白的,都改过来了
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef struct{
int *data;
int MaxSize, length;
} SeqList;
void InitList(SeqList *L){
L->data = (int *)malloc(InitSize * sizeof(int));
L->data = 0;
L->MaxSize = InitSize;
}
void IncreaseSize(SeqList *L,int len)
{
int *p = L->data;
L->data = (int *)malloc((L->MaxSize + len) * sizeof(int));
for (int i = 0; i < L->length;i++)
{
L->data = p;
}
L->MaxSize = L->MaxSize + len;
free(p);
}
int main()
{
SeqList L;
InitList(&L);
for (int i = 0; i < 5;i++)
{
L.data = 2*i;
L.length++;
}
IncreaseSize(&L, 5);
for (int i = 0; i < L.length;i++)
{
printf("%d ", L.data);
}
printf("MaxSize is :%d", L.MaxSize);
return 0;
} 你这是在学写哈希表吗{:5_109:} void InitList(SeqList *L){
L->data = (int *)malloc(InitSize * sizeof(int));
L->data = 0;
L->MaxSize = InitSize;
}
你这又赋值 0 干嘛
for (int i = 0; i < 5;i++)
{
L.data = 2*i;
L.length++;
}
for循环赋值,打印也不解引用呀?
页:
[1]