main()
{
char* a[8];
         int UpBound;
         UpBount=sizeof(a)/sizeof(char*);
printf("%d",UpBound);
getch();
}
运行结果:8用UpBount=sizeof(a)/sizeof(char*);
可以满足你的要求吧?

解决方案 »

  1.   

    不对啊,这是console程序,按你说的,无论我传多少个参数,都是1
    int main(int argc, char* argv[])
    {
    printf("Hello World!\n");
    int UpBound;
        UpBound=sizeof(argv)/sizeof(char*);
        printf("%d",UpBound);
            
    return 0;
    }
      

  2.   

    ASSERT(sizeof(char));
    Upbound=sizeof(argv)/sizeof(char);
      

  3.   

    int i=0;
        while(sz[i]!='\0')
    i++;
      

  4.   

    to lzs125
       assert没有定义,怎么应用,Include哪个H文件
       假设没有这一句,答案是错的下一个回复也不对
       这个只能针对main这种特例
       如果中间就有这么一个元素什么也没有呢?
      

  5.   

    to thd111
      直接求出字符串数组有多少个元素
      

  6.   


    va_start(arg,fmt);
    va_arg(arg,type);
    va_end(arg);
    的宏可以搞定的!
    具体你自己去看一下MSDN吧!
      

  7.   

    就是这样:
        int upperBound = sizeof(my_array) / sizeof(char*);
    但有一个条件,my_array不能时作为参数传进来的,必须是局部定义的或者全局定义的,因为C中函数调用是,把数组参数转成指针类型,所以
        main(int argc,char *argv[]) 等价与    main(int argc,char **argv)
    中,sizeof(**argv)==sizeof(void *)==sizeof(char *)
      

  8.   

    如果你一定要在函数中求出字符串数组的大小,可以这样int test_array_of_str(char *argv[])
    {
       int i;
       for(i=0;argv[i];i++);
       return i;
    }main()
    {
       char *my_argv[] ={ "don't",  "forget", "to","place","the","NULL",NULL };
       printf("size of my_argv = %d\n",test_array_of_str);
       return 0;
    }
      

  9.   

    sorry,两处错误:sizeof(argv)==sizeof(char **)==sizeof(char *) printf("size of my_argv = %d\n",test_array_of_str(my_argv));