【发布时间】:2020-06-01 20:51:53
【问题描述】:
我在使用这个指向代表字符串数组的字符的指针时遇到问题。
我应该用一些偏移量 i 取消引用它以获得第 i 个字符串,然后用其他一些偏移量 j 取消引用结果以获得该字符串的第 j 个字符。
在我的理解中,假设索引是入站的,我可以通过几种语法方式做到这一点,例如,获取第二个字符串的第 6 个字符:
char* myFun(char** strs, int size){
char a;
int i=2,j=6;
a=strs[i][j];
a=*(strs[i]+j);
a=(*strs+i)[j];
a=*(*(strs+i)+j);
}
但是,我在以下代码的for 循环的行上收到了运行时错误runtime error: load of null pointer of type 'char',也许这个错误不是我怀疑的错误,但这就是我向您寻求帮助的原因.
char * myFn(char ** strs, int strsSize){
if(*strs=NULL || strsSize==0){
printf("empty first string, or empty array of strings\n");
return NULL;
}
int i,pf_s=1;
char * pf_str=(char*)calloc(pf_s,sizeof(char));
for(i=0;*(strs[0]+i)!='\0';++i){// <-------- runtime error
if(!(i<pf_s-2)){
pf_s=pf_s*2;
pf_str=(char*)realloc(pf_str,2*pf_s*sizeof(char));
}
*(pf_str+i)=(*strs)[i];
}
pf_str[i]='\0';
pf_str=(char*)realloc(pf_str,i+1*sizeof(char));
printf("%s\n",pf_str);
return pf_str;
}
【问题讨论】:
-
当你解决了你的问题并且这是一个错字你应该删除这个问题。
-
这个问题就这么没用吗?除了是否是错字之外,我认为带有相同错误消息的人可能会在这里看到他们可能会取消引用空指针(可能不像我的代码那样明显)。
标签: c pointers runtime-error pointer-to-pointer