c++中数组名作为实参传递给函数的有关问题
c++中数组名作为实参传递给函数的问题
请问数组名作为实参传递给函数到底是基于参数的引用传递还是基于指针的引用传递?(C++)
比如函数sizeof()在main()中使用sizeof(数组名)返回的是数组大小,但是在定义的函数中如size_t getsize(double *)中使用sizeof函数,并将数组名传递给他后返回的却是指针的字节数是怎么回事?sizeof函数和自己定义的getsize函数有什么不同呢?为什么同样的调用同样的参数返回值却不同?
------解决思路----------------------
数组名作为函数参数将自动退化为指针
------解决思路----------------------
数组指针传递时会退化为指针传递,即函数中看到的只是一个指针,sizeof得到的自然是指针的大小
------解决思路----------------------
一个是编译前、一个是编译后的,怎么可以混为一谈的
sizeof 在编译前就会结合上下文直接把 sizeof(xxx) 改成相应的数字了,所以 sizeof 一般用在固定大小的类型、结构、数组上,因为这些东西在编译前你就已经定义好它们了
而 getsize 是运行时函数,它只能根据内存中的调试信息来获得指针数据的大小,这些数据都是可变的
------解决思路----------------------
1 指针
2 sizeof不是函数,是操作符。
请问数组名作为实参传递给函数到底是基于参数的引用传递还是基于指针的引用传递?(C++)
比如函数sizeof()在main()中使用sizeof(数组名)返回的是数组大小,但是在定义的函数中如size_t getsize(double *)中使用sizeof函数,并将数组名传递给他后返回的却是指针的字节数是怎么回事?sizeof函数和自己定义的getsize函数有什么不同呢?为什么同样的调用同样的参数返回值却不同?
------解决思路----------------------
数组名作为函数参数将自动退化为指针
------解决思路----------------------
数组指针传递时会退化为指针传递,即函数中看到的只是一个指针,sizeof得到的自然是指针的大小
------解决思路----------------------
一个是编译前、一个是编译后的,怎么可以混为一谈的
sizeof 在编译前就会结合上下文直接把 sizeof(xxx) 改成相应的数字了,所以 sizeof 一般用在固定大小的类型、结构、数组上,因为这些东西在编译前你就已经定义好它们了
而 getsize 是运行时函数,它只能根据内存中的调试信息来获得指针数据的大小,这些数据都是可变的
------解决思路----------------------
1 指针
2 sizeof不是函数,是操作符。