鱼C论坛

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

问一个有关数组的问题

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

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

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

x
c语言中有没有给数组的数量动态赋值的方法
比如
int p[a];
scanf("%d", &a);
这种类型的方法(这个是不行的, 我试过了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 20:24:25 | 显示全部楼层
     动态数组应该把两个语句顺序倒过来才对啊
scanf("%d", &a);
int p[a];
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这样也不行,提示“p”: unknown size
想知道小甲鱼最近在做啥?请访问 -> 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的值必须在你定义数组之前确定才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 10:28:47 From FishC Mobile | 显示全部楼层
方向换一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-22 14:35:20 | 显示全部楼层
c语言数组定义不能用变量,可以用指针,然后动态分配地址,或者是用容器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

main(void)
{
        int k = 200                          ;
        int p[k]                             ;
        for(k = 0 ; k < 200 ; k ++) p[k] = k ;
        for(k = 0 ; k < 200 ; k ++) {
                if(!(k % 10)) printf("\n\t") ;
                else printf(" , ")           ;
                printf("%3d" , p[k])         ;
        }
}
        编译运行情况:
C:\Bin>g++ -o x x.c

C:\Bin>x

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

使用道具 举报

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

C语言里完全可以这样弄啊
int main(){
    int N;
    scanf("%d",&N);
    if (N<0){
        N=0;
    }
    int a[N];
     ......
}
c++里就不行了,动态数组了解一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 23:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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