Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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 为什么字符指针数组中的值会被覆盖?_C_Arrays_Pointers - Fatal编程技术网

C 为什么字符指针数组中的值会被覆盖?

C 为什么字符指针数组中的值会被覆盖?,c,arrays,pointers,C,Arrays,Pointers,下面是函数store()的片段。这里尝试将字符数组的地址存储在字符指针数组中(char*subsequence[]-->存储所有字符串的所有地址)。这里字符串存储在名为dest的char数组中,其地址存储在子序列[]中 分配值时(subsequence[subsequence_index++]=dest),它会覆盖以前的值 代码: 子序列大小=0;/**全局变量*/ 子序列_索引=0;/**全局变量*/ 无效存储(整数长度,字符目的地[]){ 整数指数; 如果(长度>子序列大小){ printf

下面是函数store()的片段。这里尝试将字符数组的地址存储在字符指针数组中(char*subsequence[]-->存储所有字符串的所有地址)。这里字符串存储在名为dest的char数组中,其地址存储在子序列[]中

分配值时(subsequence[subsequence_index++]=dest),它会覆盖以前的值

代码:

子序列大小=0;/**全局变量*/
子序列_索引=0;/**全局变量*/
无效存储(整数长度,字符目的地[]){
整数指数;
如果(长度>子序列大小){
printf(“将进入无效循环\n”);

对于(index=0;indexShow如何调用
store
。更好的是,提供一个。我预测
dest
是一个可用于新内容的缓冲区。因此,同一个指针被重复放置在数组中,指针引用的缓冲区将用新内容更新。请参阅此So问题中的最后两条注释:值不是在char指针数组中被覆盖。您有一个数组多次包含同一指针(每个入口点指向同一个变量),并且您正在覆盖该变量。Hi@aschepler每次-->存储(长度,dest)都是这样调用存储的;通过循环从另一个函数获取,其中dest是一个字符数组。是的,Michael dest在循环的每次迭代中为自己获取一个新值,并调用存储。
subsequence_size=0;   /** global variable*/
subsequence_index=0;  /** global variable*/

void store(int length, char dest[]) {
int index;

if(length > subsequence_size) { 
printf("Will enter the nullifying loop\n");
    for(index=0; index<MAXLEN; index++)
        subsequence[index]=NULL;
    subsequence_size++;
    subsequence_index=0;
}

printf("Assigning value to store....index=%d\n",subsequence_index);
subsequence[subsequence_index++]=dest;

printf("Printing subsequence\n");
for(index=0; index<subsequence_index; index++)
    printf("%s, ",subsequence[index]);
printf("\n");
}