指针作为参数

时间:2013-07-23 22:13:18

标签: pointers parameters

我在创建此函数时遇到问题,该函数应该返回在数组中输入的字符数。但总是返回20它是数组本身的极限。

代码:

int LongitudCadena (char *pcadena) {
    // cantidad its the counter of chars that in the array
    int cantidad=0;  
    //M its a constant equals 20, that its the limit of the array
    for(int a=0;a<M;a++){  
        if(pcadena!=0){
            pcadena++;   
            cantidad++;
        } else {
            return 0;
        }
    }
    return cantidad;
}

3 个答案:

答案 0 :(得分:0)

pcadena,指针永远不会是0(NULL)...你的意思是它指向的字符是'\0'

if (*pcadena)

另一个问题是,一旦找到终结符,就会返回0。你应该在那里返回cantidad

注意:cantidad == a

答案 1 :(得分:0)

if(pcadena!=0)替换为if(*pcadena!='\0')

另外,将else条件更改为

else 
{
   return cantidad;
}

else 
{
   break;
}

答案 2 :(得分:0)

代码有几个问题。首先,您应该测试指针所指向的地址的内容。

...
if(*pacadena!=0) {
    ....

其次,当pcadena为0时,为什么在while循环中返回0?你不应该返回目前的长度吗?假设您的数据始终以\0结尾,那么您的for循环应该如下所示:

for(int a=0;a<M;a++){  
    if(*pcadena){
        pcadena++;   
        cantidad++;
    } else {
        return cantidad;
    }
}

此外,如果您的数据确实被\0终止,那么您应该只使用strlen函数。没有必要重写这个。