红联Linux门户
Linux帮助

不明白为什么输出 4,谁能帮我解释下,谢谢。

发布时间:2009-04-04 23:36:44来源:红联作者:brucezuo
#include
func(char *str)
{
printf(" %d",sizeof(str)); // 这里为什么输出是4?
printf(" %d",strlen(str));
}

int main()
{
char a[]="123456789";

printf(" %d",sizeof(a));

printf(" %d",strlen(a));


func(a);
return 0;
}
最后输出是 10 9 4 9 ,不明白为什么输出 4,谁能帮我解释下,谢谢。
文章评论

共有 7 条评论

  1. dert 于 2009-10-10 17:21:57发表:

    学习了

  2. shenhao0129 于 2009-09-16 20:58:18发表:

    实际传的参数是一个指针

  3. bindy 于 2009-09-16 19:05:45发表:

    学习了。呵呵

  4. kgduu 于 2009-09-11 11:24:44发表:

    明白了

  5. dingjing 于 2009-05-04 10:13:24发表:

    sizeof是对自己参数求的字节值,str是一个指针,它的值为4字节的地址

  6. brucezuo 于 2009-04-06 00:00:46发表:

    其实我是没搞清楚sizeof方法对传入指针变量后如何处理,现在明白了,谢谢楼上.

  7. juniechu 于 2009-04-05 03:27:16发表:

    我来解释吧

    你可以用这样一个程序来检测

    #include "stdio.h"

    int main()
    {
    char c = '1';
    char *p = &c;
    printf ("char = %d, *char = %d\n",c,p);
    return 0;
    }

    你应该看到如下的结果
    char = 1, *char = 4