原创 C 语言中的函数传递问题

2010-9-25 14:11 1526 3 3 分类: MCU/ 嵌入式

今天在一本书上看到这样一个子函数:


                  void  fun(char  a[10])


                      {


                                 int  i = sizeof(a);


                                 char  c = a[3];


                      }


        问定义一个实参b[10],如果数组b真正传递到函数内部,那 i 的值应该为10.。但经测试 i 值为4!说明一条规则:


                  C语言中,当一维数组作为函数参数的时候,编译器总是把它解析成一个指向其首元素首地址的指针


       从这个子函数上我又想到一个问题,修改上述子函数如下:


                   void  fun(char  a[10])


                      {


                                char  b[10] = {0}; 


                               


                                int  i = sizeof(a);


                                int  j = sizeof(b);


                        }


        按照那条规则,i 和 j 的值应该不一样,i 为4,j 为10。


        然后我写了一个小程序测试了下,结果果然如上述分析:i 为4, j为10。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条