黑马程序员技术交流社区

标题: 如何计算C语言数组的长度. [打印本页]

作者: 王振宇351x    时间: 2014-9-1 02:31
标题: 如何计算C语言数组的长度.
将C语言数据作为参数传入函数的时候,
实际上,在函数里,我们得到的只是一个char *指针,那么问题是,我们如何去计算数组的大小,或者长度呢,
在数组里面,又没有一个'\0'可以作为结束标志.
作者: claud0623    时间: 2014-9-1 09:47
C语言中,这样传递得到的确实是一个指针,而指针默认是八个字节,只能事先求得数组元素的个数,我们利用数组长度进行其他操作时,比如求数组中元素最小值,传递就必须传递两个参数,一个是数组,另一个那就是数组的长度了。
你看我写的代码:
  1.     int array[]={18,29,34,56,23,108,9};
  2.     int length=sizeof(array)/sizeof(int);// 计算数组元素的个数
  3.     int result=arrayMin(array,length);// 调用函数,求得数组中元素最小值
复制代码

就我们目前学的状况来看,只能用这种办法来对数组进行操作了。
作者: 眼瞳╄渲染繁华    时间: 2014-9-1 19:05
你说的是字符串数组吧?

#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;
}

作者: Mike001    时间: 2015-4-26 19:44
兄弟,利用sizeof就可以。。。。




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