C++ 函数始终返回0

C++ 函数始终返回0,c++,C++,功能: int num(char a[]) //将字符串型的数字转化成int { int z, x, y; z = 0; int m = sizeof(a); if(m == 1) z = a[0] - 48; if(m == 2) { x = a[0] - 48; y = a[1] - 48; z = x * 10 + y; } if(m == 3)

功能:

int num(char a[]) //将字符串型的数字转化成int 
{
    int  z, x, y;
    z = 0;
    int m = sizeof(a);

    if(m == 1)
        z = a[0] - 48;

    if(m == 2)
    {
        x = a[0] - 48;
        y = a[1] - 48;
        z = x * 10 + y;
    }

    if(m == 3)
    {
        x = a[0] - 48;
        y = a[1] - 48;
        z = a[2] - 48;
        z = x * 100 + y * 10 + z;
    }
例如:
chara[3]={2,15},但
num(a)=0


我不知道为什么。

声明为
char a[]
的函数的参数被调整为
char*
类型。指针的大小不取决于数组作为参数传递的元素数

有效函数的外观如下所示

#include <cstring>

//...

int num( const char a[] )//将字符串型的数字转化成int 
{
    int  z,x,y;

    size_t n = std::strlen( a );

    z = 0;

    if( n == 1 )
        z = a[0] - '0';

    if ( n == 2 )
    {
        x = a[0] - '0';
        y = a[1] - '0';
        z = x * 10 + y;
    }

    if ( n == 3 )
    {
        x = a[0] - '0';
        y = a[1] - '0';
        z = a[2] - '0';
        z = x * 100 + y * 10 + z;
    }
    //...

我根本看不出
return
语句??也
intm=sizeof(a)可能不会执行您认为它会执行的操作。除默认int=0外,不返回任何值
z = 0;

for ( size_t i = 0; i < 3 && a[i]; i++ ) z = 10 * z + a[i] - '0';
return z;