鱼C论坛

 找回密码
 立即注册
查看: 2180|回复: 29

[已解决]c语言,报错问题

[复制链接]
发表于 2021-12-11 11:56:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. ......
  2.         int m,p,n;
  3.        
  4.         // 定义第一个矩阵
  5.         printf("请输入第一个矩阵的尺寸(M * P):");
  6.         scanf("%d * %d",&m,&p);
  7.         int str_1[m][p];

  8.         // 定义第二个矩阵
  9.         printf("请输入第二个矩阵的尺寸(P * N):");
  10.         scanf("%d * %d",&p,&n);
  11.         int str_2[p][n];
  12. ......
复制代码

为什么这一段我这样写会报错?不理解啊
最佳答案
2021-12-11 13:54:40

把n, p换成数字(常量)就可以了,不要scanf输入
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-11 11:59:17 From FishC Mobile | 显示全部楼层
scanf("%d * %d",&m,&p); 改成  scanf("%d%d",&m,&p);

输入例子:
4 3
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 12:14:19 | 显示全部楼层
傻眼貓咪 发表于 2021-12-11 11:59
scanf("%d * %d",&m,&p); 改成  scanf("%d%d",&m,&p);

输入例子:

这个格式不对吗?可是小甲鱼也是这样写的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 12:45:15 | 显示全部楼层
傻眼貓咪 发表于 2021-12-11 11:59
scanf("%d * %d",&m,&p); 改成  scanf("%d%d",&m,&p);

输入例子:
  1. int m,p,n;
  2.        
  3.         // 定义第一个矩阵
  4.         printf("请输入第一个矩阵的尺寸(M * P):");
  5.         scanf("%d%d",&m,&p);
  6.         /*int str_1[m][p];*/

  7.         // 定义第二个矩阵
  8.         printf("请输入第二个矩阵的尺寸(P * N):");
  9.         scanf("%d%d",&p,&n);
  10.         /*int str_2[p][n];*/
  11.   
  12.         // 初始化存放乘积的二维数组
  13.         /*int str1_2[m][n];*/
  14.         for(i = 0; i < m; i++)
  15.         {
  16.                 for(j = 0; j < n; j++)
  17.                 {
  18.                         str1_2[i][j] = 0;
  19.                 }
  20.         }
复制代码

改了,但还是报错,看我用/* .....*/注释的这三部分,这三个地方报错了
是定义错了还是编译器的问题呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 12:54:51 From FishC Mobile | 显示全部楼层
报错写什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 12:56:34 From FishC Mobile | 显示全部楼层
小亦003 发表于 2021-12-11 12:14
这个格式不对吗?可是小甲鱼也是这样写的

没有不对,只是如果格式这样,输入就必须依照这样的格式输入,一般初学者容易在这里弄错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 13:16:12 | 显示全部楼层
小亦003 发表于 2021-12-11 12:45
改了,但还是报错,看我用/* .....*/注释的这三部分,这三个地方报错了
是定义错了还是编译 ...

数组定义不能是变量!明显新手容易犯的错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 13:27:57 | 显示全部楼层
c语言不支持这样动态定义数组,数组[ ]内的值必须是常量,而不是变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 13:28:06 | 显示全部楼层
a327904410 发表于 2021-12-11 13:16
数组定义不能是变量!明显新手容易犯的错误
  1. $ ls
  2. main.c
  3. $ cat main.c
  4. #include <stdio.h>

  5. int main(void) {
  6.     size_t n; scanf("%lu", &n);
  7.     size_t array[n];
  8.     for(size_t i = 0; i < n; ++i) {
  9.         size_t temp; scanf("%lu", &temp);
  10.         array[i] = temp;
  11.     }
  12.     for(size_t i = 0; i < n; ++i) {
  13.         printf("%lu ", array[i]);
  14.     }
  15.     puts("");
  16.     return 0;
  17. }
  18. $ gcc -g -Wall -o main main.c
  19. $ ls
  20. main  main.c
  21. $ ./main
  22. 3
  23. 1 2 3
  24. 1 2 3
  25. $ ./main
  26. 5
  27. 9 8 7 1 2
  28. 9 8 7 1 2
  29. $ gcc --version
  30. gcc (GCC) 11.1.0
  31. Copyright (C) 2021 Free Software Foundation, Inc.
  32. This is free software; see the source for copying conditions.  There is NO
  33. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  34. $
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 13:43:07 | 显示全部楼层

cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an array of constant size 0
.cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an array of constant size 0
.cpp(15) : error C2087: '<Unknown>' : missing subscript
.cpp(15) : error C2133: 'str_1' : unknown size
.cpp(20) : error C2057: expected constant expression
.cpp(20) : error C2466: cannot allocate an array of constant size 0
.cpp(20) : error C2057: expected constant expression
.cpp(20) : error C2466: cannot allocate an array of constant size 0
.cpp(20) : error C2087: '<Unknown>' : missing subscript
.cpp(20) : error C2133: 'str_2' : unknown size
.cpp(24) : error C2057: expected constant expression
.cpp(24) : error C2466: cannot allocate an array of constant size 0
.cpp(24) : error C2057: expected constant expression
.cpp(24) : error C2466: cannot allocate an array of constant size 0
.cpp(24) : error C2087: '<Unknown>' : missing subscript
.cpp(24) : error C2133: 'str1_2' : unknown size
执行 cl.exe 时出错.

void指针和NULL指针:动动手0.obj - 1 error(s), 0 warning(s)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 13:46:08 | 显示全部楼层

我的编译器定义数组不能是变量,你的代码我这边也是这种错误。我用的vs
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 13:48:15 | 显示全部楼层

"size_t" 也是定义整型的么,没学过还不了解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 13:49:13 | 显示全部楼层
a327904410 发表于 2021-12-11 13:16
数组定义不能是变量!明显新手容易犯的错误

已经犯了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 13:50:22 | 显示全部楼层
18202486056 发表于 2021-12-11 13:27
c语言不支持这样动态定义数组,数组[ ]内的值必须是常量,而不是变量

哦哦,了解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 13:53:35 | 显示全部楼层
小亦003 发表于 2021-12-11 13:43
cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an ar ...

对应我注释的那三句
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 13:54:40 | 显示全部楼层    本楼为最佳答案   

把n, p换成数字(常量)就可以了,不要scanf输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 13:56:34 | 显示全部楼层
小亦003 发表于 2021-12-11 13:48
"size_t" 也是定义整型的么,没学过还不了解

size_t 就是正整型,如同 unsigned int
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-11 14:08:30 From FishC Mobile | 显示全部楼层
a327904410 发表于 2021-12-11 13:54
把n, p换成数字(常量)就可以了,不要scanf输入

那如果是需要用户用键盘输入数字来定义矩阵的大小,该怎么写呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 14:09:03 | 显示全部楼层
楼主的编译器应该不支援 C99 吧?现在的 C 语言编译器大部分都支援不是动态定义数组了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-11 14:18:57 | 显示全部楼层
小亦003 发表于 2021-12-11 14:08
那如果是需要用户用键盘输入数字来定义矩阵的大小,该怎么写呢?

可以用动态数组
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 11:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表