Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 用g++;访问全局2D字符数组索引_C_Arrays_Segmentation Fault_G++ - Fatal编程技术网

C 用g++;访问全局2D字符数组索引

C 用g++;访问全局2D字符数组索引,c,arrays,segmentation-fault,g++,C,Arrays,Segmentation Fault,G++,手头的工作是使用字符串数组并使用索引访问每个字符串。代码运行良好,但有时会出现分段错误,出现“错误:无法访问地址0x1处的内存” 为了更好的可读性,从一大块代码中删除了这个片段 #include<stdio.h> #include<stdlib.h> char str_map[][12] = { "abc", "def", "lmn" }; char *getStrMapAtIndex(unsigned char index) { if((s

手头的工作是使用字符串数组并使用索引访问每个字符串。代码运行良好,但有时会出现分段错误,出现“错误:无法访问地址0x1处的内存”

为了更好的可读性,从一大块代码中删除了这个片段

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

char str_map[][12] = {
   "abc",
   "def",
   "lmn"
};

char *getStrMapAtIndex(unsigned char index)
{
    if((sizeof(str_map)/sizeof(str_map[0])) <= index) return NULL;
    else return str_map[index];
}

printf("%s\n",getStrMapAtIndex(1));
#包括
#包括
char str_map[][12]={
“abc”,
“def”,
“lmn”
};
char*getStrMapAtIndex(无符号字符索引)
{

if((sizeof(str_-map)/sizeof(str_-map[0]))如果没有a,这将很难回答。您的问题严格来说是C编程问题,与数值编程无关。代码中的某个地方有一个无效指针,很可能是一个从未正确初始化以指向任何数据的指针。如果需要更多说明,请访问崩溃是不可随意复制的,并且大部分时间都有效。是的,在调用之前存在未初始化的指针,但它们是在本地作用域下定义的。您是否尝试在调试器中运行它以获取分段错误的地址?为什么要用g++编译C代码?这是一个非常糟糕的主意。