gpt4 book ai didi

c - 长整数作为 C 中的数组索引给出段错误

转载 作者:太空狗 更新时间:2023-10-29 15:11:48 24 4
gpt4 key购买 nike

以下 C 代码给出了段错误:

#include <stdio.h>
#include <stdint.h>

int main(){
uint32_t *a;
uint32_t idx=1233245613;
a[idx]=1233;
return 0;
}

如何使用 uint32_t 作为 C 中数组的索引?或者我如何使用类似数组的结构来获取 uint32_t 和 12 位数字作为索引?

如果有任何帮助,我将不胜感激。

最佳答案

  • 变量“a”只是一个指针变量。
  • 指针变量保存内存位置的地址。
  • 您需要将 a 指向已分配了所需空间的内存位置。

您还试图在数组中索引很远。您可能没有足够的可用内存,因此请务必检查 NULL。

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

int main(void){

uint32_t *a;
uint32_t idx=1233245613;

//This allows you to index from 0 to 1233245613
// don't try to index past that number
a = malloc((idx+1) * sizeof *a);
if(a == NULL)
{
printf("not enough memory");
return 1;
}


a[idx]=1233;
free(a);
return 0;
}

关于c - 长整数作为 C 中的数组索引给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650320/

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