Code Bye

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;
}
解决方案:40分
退货后他就只是一个指针,指向数组首元素,退化前用sizeof运算符是可以得到数组的长度,退化成指针后得到的将是指针的长度(32位下为4)
具体可以参看《C++必知必会》条款6

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言指针数组维度问题!