[C++] 纯文本查看 复制代码
#include "stdio.h"
struct List{
int value;
};
int main()
{
List l3,l2,l4;
List* l1 = &l3;
l3.value = 3;
l2.value = 2;
printf("************\nList工具设计\n************\n\n");
while (1)
{
printf("\n\n请输入你所要实现的功能:\n");
printf("1.初始化/切换List\n2.向列表的尾部追加指定的元素\n3.在列表的指定位置插入指定元素\n4.从列表中移除所有元素\n5.列表包含指定的元素\n6.返回列表中指定位置的元素\n7.返回列表中首次出现指定元素的索引\n8.如果列表不包含元素\n9.返回列表中最后出现指定元素的索引\n10.移除列表中指定位置的元素\n11.移除列表中出现的首个指定元素\n12.从列表中移除指定 List c 中包含的所有元素\n13.用指定元素替换列表中指定位置的元素\n14.返回列表中的元素数\n");
int k;
scanf("%d", &k);
if (k == 1)
{
printf("请选择您需要切换的list");
int kk;
scanf("%d", &kk);
if (kk == 1)
{
l1 = &l3;
}
else if (kk == 2)
{
l1 = &l2;
}
printf("%d\n",l1->value);
//List_Init(l1);
//printf("初始化完成\n");
getchar();
printf("请按任意键继续...\n");
getchar();
}
}
return 0;
}
删了点、加了点东西用于调试,测试结果是选1输出l2的值,选2输出l3的值。
主要问题我认为应该是出在这里
[C++] 纯文本查看 复制代码
scanf_s("%d", &kk);
if (kk == 1)
{
List* l1 = &l3;
}
else if (kk == 2)
{
List* l1 = &l2;
}
l1已经是结构指针了,为什么在使用的时候要重新定义?直接使用l1=&l2这样来切换不就好了? |