C语言指针数组维度有关问题
C语言指针数组维度问题!
int main(int argc,int *gars[]) // 这里的int *gars[]指针数组不是一维的吗?为什么这样定义是二维的?
{ //不是很明白,求大神解释下,谢谢!
if (argc < 4)
{
printf("参数不足,程序退出\n");
return 0;
}
int x = atoi(gars[1]);
int y = atoi(gars[3]);
char symbol=*gars[2]; // gars[2][0]
switch (symbol)
{
case '+':printf("%d\n", x + y); break;
case '-':printf("%d\n", x - y); break;
case '*':printf("%d\n", x * y); break;
case '/':if (y != 0)
{
printf("%d\n", x / y); break;
} else
{
printf("程序错误,被除数不能为0!\n"); break;
}
}
// printf("%s\n", gars[0]);
return 0;
}
------解决思路----------------------
退货后他就只是一个指针,指向数组首元素,退化前用sizeof运算符是可以得到数组的长度,退化成指针后得到的将是指针的长度(32位下为4)
具体可以参看《C++必知必会》条款6
int main(int argc,int *gars[]) // 这里的int *gars[]指针数组不是一维的吗?为什么这样定义是二维的?
{ //不是很明白,求大神解释下,谢谢!
if (argc < 4)
{
printf("参数不足,程序退出\n");
return 0;
}
int x = atoi(gars[1]);
int y = atoi(gars[3]);
char symbol=*gars[2]; // gars[2][0]
switch (symbol)
{
case '+':printf("%d\n", x + y); break;
case '-':printf("%d\n", x - y); break;
case '*':printf("%d\n", x * y); break;
case '/':if (y != 0)
{
printf("%d\n", x / y); break;
} else
{
printf("程序错误,被除数不能为0!\n"); break;
}
}
// printf("%s\n", gars[0]);
return 0;
}
------解决思路----------------------
退货后他就只是一个指针,指向数组首元素,退化前用sizeof运算符是可以得到数组的长度,退化成指针后得到的将是指针的长度(32位下为4)
具体可以参看《C++必知必会》条款6