gpt4 book ai didi

C:向下传递指针,无法从调用函数访问更新的指针!

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:19 25 4
gpt4 key购买 nike

我遇到了一个问题——我将我的指针变量分配给了一个被调用函数中的某个东西,但是当试图访问调用函数中更新的指针时,它没有显示为已更新,并导致了段错误。帮助!

“最底层的函数”:

void compareStrings(char* firstFrag, char* secondFrag, int* longestCommonLength, char* suffix, char* prefix, int* relative_pos) {
suffix = firstFrag;
prefix = secondFrag;
}

它是从这个函数调用的(printf 触发了错误)

int findBestOverlap(char* fragmentArray[], int fragmentCount, int* longestCommonLength, char* suffix, char* prefix, int* relative_pos) {
compareStrings(fragmentArray[firstFrag], fragmentArray[secondFrag], longestCommonLength, suffix, prefix, relative_pos);
printf("LCL: %i || PREFIX: %s || SUFFIX: %s", *longestCommonLength, prefix, suffix);
}

变量前缀和后缀在更高的调用函数 processStrings 中依次创建。

void processStrings(char* fragmentArray[], int fragmentCount) {
int longestCommonLength = 0;
char* suffix;
char* prefix;
int relative_pos; // Where the first letter of suffix is, vis-a-vis prefix

if ((findBestOverlap(fragmentArray, fragmentCount, &longestCommonLength, suffix, prefix, &relative_pos)) != 0) {
}
}

帮助!

最佳答案

您不是在更新指针,您只是在更改参数的局部值。您需要使用指针指针(例如 char**)并改为更改指向的值。

void compareStrings(char* firstFrag, char* secondFrag, int* longestCommonLength, char** suffix, char** prefix, int* relative_pos) {
*suffix = firstFrag;
*prefix = secondFrag;
}

然后您需要在调用者中适本地取消引用它。玩得开心!

关于C:向下传递指针,无法从调用函数访问更新的指针!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878783/

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