Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在for中创建N个变量?_C_Variables_For Loop - Fatal编程技术网

C 如何在for中创建N个变量?

C 如何在for中创建N个变量?,c,variables,for-loop,C,Variables,For Loop,我需要通过为? 例如,类似这样的情况: int N=1000; for(int i=0; i < N; i++){ char* var_i = malloc(sizeof(1)); } int N=1000; 对于(int i=0;i

我需要通过

例如,类似这样的情况:

 int N=1000;   
 for(int i=0; i < N; i++){  
    char* var_i = malloc(sizeof(1));  
    } 
int N=1000;
对于(int i=0;i

注意:我知道上面的代码不起作用,我写它只是为了解释我的意图

您可以使用数组。以下是两个例子:

#include <stdio.h>
#define N 10000

int main(void)
{
    char array[N];
    for (size_t i = 0; i < N; i++) {  
         /* Do what you want. */
    } 
    return 0;
}
#包括
#定义N 10000
内部主(空)
{
字符数组[N];
对于(size_t i=0;i
或者,如果您希望在堆中:

#include <stdio.h>
#include <stdlib.h>
#define N 10000

int main(void)
{
    char *array = malloc(sizeof *array * N);
    if (array == NULL) {
        perror("Malloc");
        exit(EXIT_FAILURE);
    }
    for (size_t i = 0; i < N; i++) {  
         /* Do what you want. */
    } 
    free(array);
    return 0;
}
#包括
#包括
#定义N 10000
内部主(空)
{
char*array=malloc(sizeof*array*N);
if(数组==NULL){
佩罗尔(“马洛克”);
退出(退出失败);
}
对于(size_t i=0;i
如果要声明N个计数变量

#include<stdio.h>
#define CHUNK 64

const int N=10; //count of the variables

int main(void){
    char* vars[N], i; //declare the array of variables

    for(i=0;i<N;i++){ //alloc variables
        vars[i]=(char*)malloc(CHUNK*sizeof(char));
        if(!vars[i]){
            printf("out of memory!");
            return 1;
        }
    }

    //do stuff

    //free memory
    for(i=0;i<N;i++)
        free(vars[i]);

    return 0;
}
#包括
#定义块64
常数int N=10//变量的计数
内部主(空){
char*vars[N],i;//声明变量数组

对于(i=0;i创建一个数组。与您的问题无关,但请记住
1
int
,这意味着
sizeof(1)
等于
sizeof(int)
。我想了想,我知道它正在工作,但是,我想知道它是否可以在没有数组的情况下通过for循环实现——也就是说,只使用单个变量进行任何迭代。@StackUser:不,而且你无论如何也不会想这样做。这是一个非常常见的初学者问题,但答案是“学会使用集合”对于你的问题,C不需要如果没有,您不能在运行时“创建”新变量。您可以在循环中定义一个变量,其生存期将是当前迭代,但该变量将在编译时由编译器定义和分配。为什么
sizeof(char)*N
而不是
N
作为
sizeof(char)
始终为1?可以使用
sizeof*array*N
确保匹配的元素大小。