A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;

}

2 个回复

倒序浏览
本帖最后由 崔维友 于 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,获取的长度就是错误的。
似乎不能通过指针传参来获取整型数组长度
回复 使用道具 举报
其实,你们下午在群里讨论我看到了,我要是告诉你,我下面的代码可以,不知道,你们做什么感想。
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马