C++问题:在函数内计算数组大小,用了两种方法,为什么结果会不一样?

2024-12-31 14:36:14
推荐回答(3个)
回答1:

数组是原始数据类型,程序运行时没有关于该数组大小的数据,编程者必须自己给出给数组的大小,是否越界等信息。
比如定义了一个数组后,编程者还必须定义一个单独的变量用来存储数组的大小,以确保访问数组不会越界。
所以不使用单独的变量,程序是不可能知道该数组的大小的。
sizeof(a)的结果不是数组的长度,而是指针int *a的字节数。

回答2:

数组名作参数的时候,如果是值传递,会蜕化成指针。具体说就是,a[]等价于*a,指针变量也是变量,占有大小,它的大小是一个int变量的大小,所以第二个结果是1. 至于第一个结果,肯定我想不需要解释了吧。

回答3:

我对你这个程序调试时候,调用popSort(a)的时候,明显的可以看到传入的只是a[]的a[0](既是10),所以函数popSort中,建议用指针(*a)++,直到判断其为'\0'为止