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
确保匹配的元素大小。