gpt4 book ai didi

c - 当您不知道程序开始时的长度是多少时,如何在多个函数中使用数组

转载 作者:行者123 更新时间:2023-11-30 19:33:43 25 4
gpt4 key购买 nike

我有一个项目,需要在两个不同的函数中使用数组,但它的长度根据命令行参数而变化,所以直到稍后我才知道它是什么。如何全局初始化数组,但是当我稍后知道长度时,我可以更改长度。这是我能提出的问题的最简化版本:

#define _XOPEN_SOURCE 500

#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>


char tile_numbers[1];
void print (void);

int main (void)
{
int x = 7;
char tile_numbers[x];
tile_numbers[0] = 'h';
tile_numbers[1] = 'e';
tile_numbers[2] = 'l';
tile_numbers[3] = 'l';
tile_numbers[4] = 'o';
tile_numbers[5] = '!';

print();

}

void print (void)
{

for(int i = 0; i < 10 ; i++)
{
printf("char: %c", tile_numbers[i]);
}

}

最佳答案

您可以使用malloc()动态分配内存,而不是数组。假设在运行时您将数组的大小存储在 int 变量 n 中。然后,您可以使用分配内存

char *tile_numbers = (char*)malloc(sizeof(char)*n);

然后,您可以像以前一样对内存位置进行索引,对于 0 范围内的任何 itile_numbers[i] >n-1.

<小时/>

如果需要全局声明,请将声明和赋值分开。在全局范围内,使用

char *tile_numbers;

在获取大小的函数中,

tile_numbers = (char*)malloc(sizeof(char)*n);

另外,如果需要调整内存大小,可以使用realloc()

tile_numbers = (char*)realloc(tile_numbers,new_size);

关于c - 当您不知道程序开始时的长度是多少时,如何在多个函数中使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45063257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com