今天在做ACM题的时候 ,遇到的一个问题,现在把这个写下来吧,可能大家以后也会遇到。
下面是将输入的数每个乘以2再输出来。
但是结果输出却只将第一个数乘以2 ;
运行以后程序竟然输出了:4,,3,4,5,6
只有第一个元素被“乘以2”。为什么呢?
运行下面的程序试一试:
运行结果是:5
1
为什么在main函数中计算数组的大小是5,在test函数中计算数组arr的大小就变成了1了呢?在C语言中可以通过sizeof的方式取得一个数组的尺寸,这是我们已经知道的。但是一旦把这个数组传递给函数的时候,到了函数内部使用的就是指向这个数组的指针了,虽然在test函数中arr声明的是数组,但是这里的arr只是一个指针而已了,arr本质上只是一个int类型的指针,而int类型的指针的大小是4,所以sizeof(arr)/sizeof(int)的结果就是1