user-0 提问: 请教一下关于switch语句中变量定义的相关问题

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-0
content: [quote=引用 5 楼 qq_24393845 的回复:] [quote=引用 3 楼 qq423399099 的回复:] 因为PLink的作用域的问题所以报错，你把PLink往外挪一层就行了 [code=c] #include<stdio.h> #include<stdlib.h> #include"标头.h" int main(void) { 	int Order = 0; 	printf("请输入命令数：\n"); 	scanf("%d", &Order); 	printf("输入代码后回车。\n"); 	for (int i = 0; i < Order; i++) 	{ 		LnList PLink; 		char buf[20]; 		scanf_s("%s", buf, 19); 		switch (buf[0]) 		{ 		case 'C': 		{ 					PLink = (LnList)malloc(sizeof(LList)); 					PLink = createLnList();  					//这里我原来是PNode PLink = createLnList();的 					后来提示错误	2	error C2065 : “PLink” : 未声明的标识符	g : \学习\vs数据结构\链式顺序表\链式顺序表\源.cpp	38	1	链式顺序表  					“PLink” : 未声明的标识符  							  int test = 0; 					scanf("%d", &test); 					break; 		} 		case 'A': 		{ 					if (buf[1] = 'P') 					{ 						printf("输入添加的值：x=?\n"); 						int a = 0; 						scanf("%d", &a); 						appendElemLnList(PLink, a); 					} 					else 					{ 						int j, x; 						printf("请输入index和x（用空格隔开）。\n"); 						scanf("%d %d", &j, &x); 						inserPreLnList(PLink, j, x); 					} 					break; 		} 		case 'P': 		{ 					printLnList(PLink); 					break; 		} 		case 'R'://删除下标为p的节点，也就是删除第p+1个元素 		{ 					 printf("请输入要删除元素的下标：\n"); 					 int xiabiao; 					 scanf("%d", &xiabiao); 					 deleteIndexLnList(PLink, xiabiao + 1); 					 break; 		} 		case 'D': 		{ 					destroyLnList(PLink); 		} 		} 	} 	printf("\n\n\n输入任何字符可以关闭程序~\n\n"); 	getchar(); 	return 0; } 更多 0

user: user-0
content: 引用 3 楼 qq423399099 的回复:因为PLink的作用域的问题所以报错，你把PLink往外挪一层就行了  #include<stdio.h> #include<stdlib.h> #include"标头.h" int main(void) { 	int Order = 0; 	printf("请输入命令数：\n"); 	scanf("%d", &Order); 	printf("输入代码后回车。\n"); 	for (int i = 0; i < Order; i++) 	{ 		LnList PLink; 		char buf[20]; 		scanf_s("%s", buf, 19); 		switch (buf[0]) 		{ 		case 'C': 		{ 					PLink = (LnList)malloc(sizeof(LList)); 					PLink = createLnList();  					//这里我原来是PNode PLink = createLnList();的 					后来提示错误	2	error C2065 : “PLink” : 未声明的标识符	g : \学习\vs数据结构\链式顺序表\链式顺序表\源.cpp	38	1	链式顺序表  					“PLink” : 未声明的标识符  							  int test = 0; 					scanf("%d", &test); 					break; 		} 		case 'A': 		{ 					if (buf[1] = 'P') 					{ 						printf("输入添加的值：x=?\n"); 						int a = 0; 						scanf("%d", &a); 						appendElemLnList(PLink, a); 					} 					else 					{ 						int j, x; 						printf("请输入index和x（用空格隔开）。\n"); 						scanf("%d %d", &j, &x); 						inserPreLnList(PLink, j, x); 					} 					break; 		} 		case 'P': 		{ 					printLnList(PLink); 					break; 		} 		case 'R'://删除下标为p的节点，也就是删除第p+1个元素 		{ 					 printf("请输入要删除元素的下标：\n"); 					 int xiabiao; 					 scanf("%d", &xiabiao); 					 deleteIndexLnList(PLink, xiabiao + 1); 					 break; 		} 		case 'D': 		{ 					destroyLnList(PLink); 		} 		} 	} 	printf("\n\n\n输入任何字符可以关闭程序~\n\n"); 	getchar(); 	return 0; } 更多 0 嗯 谢啦 还有，我改过了这个之后也改掉了一些细节不如buf[1]='P'改成==  但是之后成功运行之后，出现错误，程序关闭了。

user: user-0
content: 引用 2 楼 qq_24393845 的回复:谢谢回复~感谢嗯 谢啦 还有，我改过了这个之后也改掉了一些细节不如buf[1]='P'改成==  但是之后成功运行之后，出现错误，程序关闭了。

user: user-2
content: 因为PLink的作用域的问题所以报错，你把PLink往外挪一层就行了  #include<stdio.h> #include<stdlib.h> #include"标头.h" int main(void) { 	int Order = 0; 	printf("请输入命令数：\n"); 	scanf("%d", &Order); 	printf("输入代码后回车。\n"); 	for (int i = 0; i < Order; i++) 	{ 		LnList PLink; 		char buf[20]; 		scanf_s("%s", buf, 19); 		switch (buf[0]) 		{ 		case 'C': 		{ 					PLink = (LnList)malloc(sizeof(LList)); 					PLink = createLnList();  					//这里我原来是PNode PLink = createLnList();的 					后来提示错误	2	error C2065 : “PLink” : 未声明的标识符	g : \学习\vs数据结构\链式顺序表\链式顺序表\源.cpp	38	1	链式顺序表  					“PLink” : 未声明的标识符  							  int test = 0; 					scanf("%d", &test); 					break; 		} 		case 'A': 		{ 					if (buf[1] = 'P') 					{ 						printf("输入添加的值：x=?\n"); 						int a = 0; 						scanf("%d", &a); 						appendElemLnList(PLink, a); 					} 					else 					{ 						int j, x; 						printf("请输入index和x（用空格隔开）。\n"); 						scanf("%d %d", &j, &x); 						inserPreLnList(PLink, j, x); 					} 					break; 		} 		case 'P': 		{ 					printLnList(PLink); 					break; 		} 		case 'R'://删除下标为p的节点，也就是删除第p+1个元素 		{ 					 printf("请输入要删除元素的下标：\n"); 					 int xiabiao; 					 scanf("%d", &xiabiao); 					 deleteIndexLnList(PLink, xiabiao + 1); 					 break; 		} 		case 'D': 		{ 					destroyLnList(PLink); 		} 		} 	} 	printf("\n\n\n输入任何字符可以关闭程序~\n\n"); 	getchar(); 	return 0; } 更多 0

user: user-0
content: 谢谢回复~感谢

user: user-0
content: 错误列表提示我CASE中的PLink是为定义的，这个问题怎么解决啊！