首页 > 解决方案 > 字符指针赋值

问题描述

char *reverse(char *str){
    
    char *reverse,*temp;
    int size = length(str);

    temp = reverse;
    
    /*go to last adress str*/
    while(*str != '\0'){
        str++;
    }
    
    /*copy str in reverse to reverse*/
    do{
        str--;
        *reverse = *str;
        reverse++;
        size--;
    }while(size >= 0);
    
    
    return temp;
}

在这个函数中,当我将反向指针分配给临时指针时,我得到了分段错误。如果我添加reverse = (char*)malloc(size*sizeof(char));它工作正常。但是它是否必须在不添加它的情况下工作,它是否已经收到了一个地址。是因为下一个地址的长度大约是整数。

标签: cpointers

解决方案


实际上reverse只是一个指针,实际上没有分配它可以指向的内存。您可以使用malloc(),也可以简单地将reverse其作为附加参数传递给函数。然后你只需要确保它是由调用者分配的并且大小合适。

如果可以指向内存中的任何位置并简单地将数据写入您想要的任何位置,那么所有程序甚至整个操作系统都会崩溃或病毒可以直接感染一切...... ;-)


推荐阅读