C语言定义动态数组
2019-03-31 15:23
113 查看
今天在unbutu写一道简单的约瑟夫环的问题:有n个人,循环报数,报到3的人淘汰,求最后剩下的人,我就想定义一个动态数组来记录他们是否被淘汰`,如果淘汰了就把他对应数组中的值改为0,淘汰n-1个人之后,数组中值为1的人就是最后剩下的人。
int n; printf("请输入总人数:\n"); scanf("%d",&n); int a[n] = {1};
我们定义动态数组的时候,如果我们像上面这样写编译的时候就会报错,我在网上看到分配动态数组都是像下面这样写的
int n; printf("请输入总人数:\n"); scanf("%d",&n); int *a; a = (int *)malloc(sizeof(int)*n);
这里定义了一个指针a,然后用malloc分配了内存,a指向了分配的内存空间的首地址,我们想要给它赋值的时候可以用*(a+i)进行赋值,这样编译的时候是可以的。但是我们像下面这样写也是可以的。
int i; int n; printf("请输入总人数:\n"); scanf("%d",&n); int a[n]; for(i = 0;i = n;i++) { a[i] = 1; }
在我的印象中c语言应该是没办法分配动态数组的,在定义数组的时候必须确定数组的大小,但是上面这个代码编译时可以的,只要int a
在执行时n已经有确定的值的时候是可以通过的,但是我们不可以在定义动态数组的同时进行初始化,像第一个代码就会报错。
相关文章推荐
- C语言中定义动态数组
- 如何使用C语言定义不定长数组(动态数组)
- 动态定义数组malloc--C语言
- c语言一维数组的定义、初始化
- 动态定义数组
- 【转】c语言中内存的动态分配与释放(多维动态数组构建)
- c++ 定义动态数组
- C语言中,为什么结构体后面经常定义一个空数组
- [c]c语言中可不可以用变量定义数组的个数
- C语言中多维数组的常见动态分配方式及其在函数参数传递时的应用
- C语言中字符串的数组的定义实现
- 可存放任意类型变量的动态数组--C语言实现
- 二维动态数组定义及二维静态数组与**P的区别
- C语言中怎么求动态数组大小
- C++中动态定义一维数组,二维数组,三维数组的方法
- C语言数组类型以及函数类型的定义
- C语言中利用#define和#undef定义初始化数组,实现不同的初始化效果
- C语言定义数组的几种形式
- C语言变长消息定义:柔性数组
- C语言之动态数组