关于 一个SIZEOF的问题 如果定义函数 void func(char str[200]) { printf("%d\n",sizeof(str)); } 请问输出为什么是4,而不是200
c语言 基本概念 程序开发
数组名和指针有很多相似之处,当用数组做为函数参数时,数组名会弱化成变量指针,详细可以参考《C语言参考手册》第五版,里面对数组名的弱化介绍的很详细.
str是指针啊,肯定是4啊,这个问题面试的时候问到过好几次。,
形参其实是一个地址,即指针类型。所以,在编译器为32位的环境里,sizeof的指针类型值都是4.
数组做形参 会退化成常量指针。 func(char str[20]) == func(const char *str)
C/C++ code
void func(char str[200]);//很有欺骗性的申明
数组作为函数参数时,退化为指针 up + 1
void test(char str[200]) { printf("%d\n",sizeof(str)); ====> 4 } int main(int argc, char *argv[]) { char str[200] = {0}; printf("%d\n",sizeof(str)); =====> 200 test(str); } 数组作为函数参数时,退化为指针
数组作为函数参数时,退化为指针
数组作为函数参数等价于指向数组首元素的常量指针,你写200还是2000都一样没意义 指针大小为4
这段代码错哪了,为什么加abs侯结果不一样
嵌入式系统的开发学习怎么进行
* glibc detected * ./parse: malloc(): smallbin ...
一道经典的C/C++面试题,该如何处理
求猜数目字算法循环次数最少的算法
vc 和matlab,该如何处理