C 用g++;访问全局2D字符数组索引
手头的工作是使用字符串数组并使用索引访问每个字符串。代码运行良好,但有时会出现分段错误,出现“错误:无法访问地址0x1处的内存” 为了更好的可读性,从一大块代码中删除了这个片段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
#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代码?这是一个非常糟糕的主意。