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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王振宇351x 中级黑马   /  2014-9-1 02:31  /  1802 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

将C语言数据作为参数传入函数的时候,
实际上,在函数里,我们得到的只是一个char *指针,那么问题是,我们如何去计算数组的大小,或者长度呢,
在数组里面,又没有一个'\0'可以作为结束标志.

4 个回复

倒序浏览
C语言中,这样传递得到的确实是一个指针,而指针默认是八个字节,只能事先求得数组元素的个数,我们利用数组长度进行其他操作时,比如求数组中元素最小值,传递就必须传递两个参数,一个是数组,另一个那就是数组的长度了。
你看我写的代码:
  1.     int array[]={18,29,34,56,23,108,9};
  2.     int length=sizeof(array)/sizeof(int);// 计算数组元素的个数
  3.     int result=arrayMin(array,length);// 调用函数,求得数组中元素最小值
复制代码

就我们目前学的状况来看,只能用这种办法来对数组进行操作了。
回复 使用道具 举报 1 0
你说的是字符串数组吧?

#include <stdio.h>
//写个函数计算字符串长度
//第一种方式
int myStrlen(const char *str)
{
    int len = 0;
    for (int i = 0; str[i] != '\0'; i++) {
        len++;
    }
    return len;
}

//第二种方式
int myStrlen2(const char *str)
{
    int len = 0;
    for (;str[len] != '\0'; len++);
    return len;
}

//第三种方式
int myStrlen3(const char *str)
{
    int len = 0;
    for (; str[len++] != '\0';);
    return len - 1;
}
//第四种方式
int myStrlen4(const char *str)
{
    int len = -1;
    for (; str[++len];) ;
    return len;
}
//第五种方式
int myStrlen5(const char *str)
{
    int len = -1;
    while (str[++len]);
    return len;
}
//第六种方式
int myStrlen6(const char *str)
{
    const char *start = str;
    while (*(str++) != '\0');
    return (int)(str - start - 1);
}



int main(int argc, const char * argv[])
{
    char *name = "";
    int len =  myStrlen6(name);
    printf("%d\n",len);
    return 0;
}

点评

楼主说的是求数组长度,不是字符串,还要涉及参数传递,一切用了‘\0’都可以无视。  发表于 2014-9-1 19:56
回复 使用道具 举报
兄弟,利用sizeof就可以。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马