main()
{  int i; 
   char buffer[96];
   scanf("%s",buffer);
     i = sizeof(buffer);
        printf("%d",i);
    
}
输出为:96
将buffer作为下面函数的第一个参数带入,输入为4。
在main中sizeof(buffer)我当然知道可以求出分配的空间为96。
关键是求带入下面函数以后怎么求出buffer的分配空间为96?
char * my_str(char *dest)
{
        int i;
        i = sizeof(dest);
        printf("%d",i);
}
my_str(buffer)
输出为:4;

解决方案 »

  1.   

    不可以的。你可以看看Windows API函数的声明,好多用到指针的地方都是一个指针加一个指针所指内存空间的大小这样的方式。
      

  2.   

    这要看你的这个缓冲区是不是以NULL结尾了。如果是的话,可以用strlen(),如果不是的话,没办法。
      

  3.   

    先将串的结尾设为NULL吧~~~ 然后,strlen()
      

  4.   

    设为NULL是不可以的.因為buf之前就有可能出現NULL.你這樣是不行的...
    1.initialize後.讓最後一個一定為NULL.
    2.設置成全局..這對你來說不可取.
    3.還是按照樓上樓上方法巴.傳第三參數.
      

  5.   

    同意,这种情况只能传第三参数.
    要不就在你对buffer进行处理之前sizeof.