鱼C论坛

 找回密码
 立即注册
查看: 2739|回复: 7

问一个有关数组的问题

[复制链接]
发表于 2019-11-21 20:15:17 | 显示全部楼层 |阅读模式

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

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

x
c语言中有没有给数组的数量动态赋值的方法
比如
int p[a];
scanf("%d", &a);
这种类型的方法(这个是不行的, 我试过了)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 20:24:25 | 显示全部楼层
     动态数组应该把两个语句顺序倒过来才对啊
  1. scanf("%d", &a);
  2. int p[a];
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-22 08:06:40 | 显示全部楼层
jackz007 发表于 2019-11-21 20:24
动态数组应该把两个语句顺序倒过来才对啊

这样也不行,提示“p”: unknown size
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 10:13:25 From FishC Mobile | 显示全部楼层
本帖最后由 bin554385863 于 2019-11-22 14:38 编辑
咸鱼人某天 发表于 2019-11-22 08:06
这样也不行,提示“p”: unknown size


你要先声明一个变量,
然后初始化它,
最后才能用它来定义数组。
你想直接用int p[a],同时定义p和a,桃子吃多了吧
int main()
{
        int a;
        scanf("%d", &a);
        int p[a];
}

a的值必须在你定义数组之前确定才行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 10:28:47 From FishC Mobile | 显示全部楼层
方向换一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 14:35:20 | 显示全部楼层
c语言数组定义不能用变量,可以用指针,然后动态分配地址,或者是用容器
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 18:24:06 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-22 18:25 编辑
咸鱼人某天 发表于 2019-11-22 08:06
这样也不行,提示“p”: unknown size


看看这个:
  1. #include <stdio.h>

  2. main(void)
  3. {
  4.         int k = 200                          ;
  5.         int p[k]                             ;
  6.         for(k = 0 ; k < 200 ; k ++) p[k] = k ;
  7.         for(k = 0 ; k < 200 ; k ++) {
  8.                 if(!(k % 10)) printf("\n\t") ;
  9.                 else printf(" , ")           ;
  10.                 printf("%3d" , p[k])         ;
  11.         }
  12. }
复制代码

        编译运行情况:
  1. C:\Bin>g++ -o x x.c

  2. C:\Bin>x

  3.           0 ,   1 ,   2 ,   3 ,   4 ,   5 ,   6 ,   7 ,   8 ,   9
  4.          10 ,  11 ,  12 ,  13 ,  14 ,  15 ,  16 ,  17 ,  18 ,  19
  5.          20 ,  21 ,  22 ,  23 ,  24 ,  25 ,  26 ,  27 ,  28 ,  29
  6.          30 ,  31 ,  32 ,  33 ,  34 ,  35 ,  36 ,  37 ,  38 ,  39
  7.          40 ,  41 ,  42 ,  43 ,  44 ,  45 ,  46 ,  47 ,  48 ,  49
  8.          50 ,  51 ,  52 ,  53 ,  54 ,  55 ,  56 ,  57 ,  58 ,  59
  9.          60 ,  61 ,  62 ,  63 ,  64 ,  65 ,  66 ,  67 ,  68 ,  69
  10.          70 ,  71 ,  72 ,  73 ,  74 ,  75 ,  76 ,  77 ,  78 ,  79
  11.          80 ,  81 ,  82 ,  83 ,  84 ,  85 ,  86 ,  87 ,  88 ,  89
  12.          90 ,  91 ,  92 ,  93 ,  94 ,  95 ,  96 ,  97 ,  98 ,  99
  13.         100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109
  14.         110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119
  15.         120 , 121 , 122 , 123 , 124 , 125 , 126 , 127 , 128 , 129
  16.         130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139
  17.         140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149
  18.         150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159
  19.         160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169
  20.         170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179
  21.         180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189
  22.         190 , 191 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199
  23. C:\Bin>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 18:55:08 | 显示全部楼层
c语言数组定义不能用变量,可以用指针,然后动态分配地址,或者是用容器

C语言里完全可以这样弄啊
  1. int main(){
  2.     int N;
  3.     scanf("%d",&N);
  4.     if (N<0){
  5.         N=0;
  6.     }
  7.     int a[N];
  8.      ......
  9. }
复制代码

c++里就不行了,动态数组了解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 02:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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