黑马程序员技术交流社区

标题: int 数组传参,根据指针得到整型数组长度? [打印本页]

作者: T.H.T    时间: 2014-5-7 17:08
标题: int 数组传参,根据指针得到整型数组长度?
int 数组传参,根据指针得到整型数组长度? 请大神帮忙

下面是我写的,字符串 数组传参,根据指针得到字符串数组长度。

#include <stdio.h>


int main()
{
    int getPointerLengthArrayChars(char *c );
   
   
    char str[4]="abc";
    printf("%s\n",str);
   char *p_str=&str;
    int result=getPointerLengthArrayChars(p_str);
   
       printf("得到字符串的长度:%i\n",result);
}


/**
得到指针字符串,并得到指针长度
*/
int getPointerLengthArrayChars(char *c )
{
    char tempChar;
    char *p_tempChar=&tempChar;
    int i=0;
    while (1) {
        *p_tempChar=*(c+i);
        if(tempChar=='\0')
        {
            break;
        }
        i++;
    }
    return i;

}
作者: 崔维友    时间: 2014-5-7 22:16
本帖最后由 崔维友 于 2014-5-7 22:46 编辑
  1. #include <stdio.h>

  2. int getLen(int *arr){
  3.         int i = 0;
  4.         while(arr[i]){
  5.                 i++;
  6.         }
  7.         return i;
  8. }

  9. int main()
  10. {
  11.         int arrInt[] = {32, 546, 23, 5, 3};

  12.         int l = getLen(arrInt);
  13.         printf("getLen内:%d\n", l);

  14.         printf("main内:%lu\n", sizeof(arrInt)/sizeof(int));

  15.         return 0;
  16. }
复制代码
这个办法也有bug,如果数组中出现了0,获取的长度就是错误的。
似乎不能通过指针传参来获取整型数组长度

作者: D调的沉默    时间: 2014-5-7 23:22
其实,你们下午在群里讨论我看到了,我要是告诉你,我下面的代码可以,不知道,你们做什么感想。
  1. int main(int argc, const char * argv[])
  2. {
  3.    
  4.     int a[4] ={1,3,6,5};
  5.    
  6.     long length = sizeof(a)/sizeof(int);
  7.     printf("%ld",length);
  8.     return 0;
  9. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2