精华内容
下载资源
问答
  • c语言int数组长度求法及测试

    千次阅读 2013-10-28 11:08:07
    输入一串数字,定义为整型数组,要如何求数组长度呢? 解决方案sizeof(s)/sizeof(int) s是定义的数组,即用数组所占的内存大小除以整型占得内存,就会得到数组的长度。 测试程序如下(环境:Ubuntu 2013): #...

    输入一串数字,定义为整型数组,要如何求数组长度呢?

    解决方案sizeof(s)/sizeof(int) s是定义的数组,即用数组所占的内存大小除以整型占得内存,就会得到数组的长度。

    测试程序如下(环境:Ubuntu 2013):

    #include<stdio.h>

    #include<stdlib.h>

    #include<unistd.h>

     

    int main()

    {

             int s[]={1,2,3,4,5,6,7,8,9,10};

             int len=sizeof(s)/sizeof(int);

             printf("%d\n",len);

             return 0;

    }

    测试结果:10 可以求出数组的正确长度。

    由此引申到另一个问题,是不是其他一些常用的,需要求长度的类型都可以用这种方法来求数组的长度呢?于是在同样的环境中测试了以下几种变量类型的值。

     

    char:当然这个数组结束标志很明显’\0’,用这种方法求出的长度是加上最后的结束符“\0”的。

    #include<stdio.h>

    #include<stdlib.h>

    #include<unistd.h>

     

    int main()

    {

             char c[]={'1','2','3','4','5','6','7','8','9','0','\0'};//包含结束符\0,每个单引号中只有一个字符

             int len=sizeof(c)/sizeof(char);

             printf("%d\n",len);

             return 0;

    }

    测试结果:11数组长度加上\0的长度,即数组长+1。当然字符数组有明显的结束标志,可以用判断元素是否为\0的方法求长度。另:根据数组的定义形式不同,上文char c[]一句还可以换成:

    char c[]={"1234567890"};这样可以不写出最后的\0,但是它还是存在的,故求得的长度也是11

     

    double:与int型类似,测试程序如下:

    #include<stdio.h>

    #include<stdlib.h>

    #include<unistd.h>

     

    int main()

    {

             doubled[]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.123};

             int len=sizeof(d)/sizeof(double);

             printf("%d\n",len);

             return 0;

    }

    测试结果:10是数组的数字个数。float型与double类似。

    展开全文
  • C语言 获取int数组长度

    万次阅读 2014-08-22 11:01:06
    函数通过参数传入一个数组的指针,如何获取该数组长度?如 int InsertSort(int* array,int key) 其中array的长度如何获取? 用过sizeof(array) / sizeof(int),但是结果不对,始终是1

    函数通过参数传入一个数组的指针,如何获取该数组的长度?

    如 int InsertSort(int* array)

    其中array的长度如何获取?

    用过sizeof(array) / sizeof(int),始终是1

    注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。


    sizeof是在编译阶段展开的一个宏


    错误,函数参数在运行阶段以压栈方式传递了一个地址

    int mylen(int buf[])
    {
     return sizeof(buf) / sizeof(int);
    }


    正确,因为buf的分配过程是在编译阶段定义。
    int main(void)
    {
     int buf[] = {0, 0, 0, 0};
     int l =sizeof(buf) / sizeof(int);
     printf("%d\n", l);
     system("pause");
     return 0;
    }


    C++/C语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。

    #define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )


    template<class T>
    int getArrayLen(T& array)
    {
        return sizeof(array)/sizeof(array[0]);
    }


    展开全文
  • c语言中,定义数组后可以用sizeof命令获得数组的长度【可容纳元素个数】,通过传递数组名参数到子函数中,以获得数组长度是不可行的。c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)如:{int ...

    c语言中,定义数组后可以用sizeof命令获得数组的长度【可容纳元素个数】,通过传递数组名参数到子函数中,以获得数组长度是不可行的。

    b9c691c83603788fba5323e6d4268afc.png

    c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)

    如:{

    int data[4];

    int length;

    length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小

    printf("length of data[4]=%d", length ); //输出length of data[4]=4

    }

    通过传递数组名参数到子函数中,以获得数组长度是不可行的。如:int getLength(int[] a){

    int length;

    length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1

    return length;

    }

    因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,

    这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。

    a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。

    因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。

    推荐教程: 《c语言教程》

    展开全文
  • C语言中返回数组长度

    2020-05-11 11:46:40
    C语言中返回数组长度 sizeof(type) 用来返回字节长度,可以根据每种类型的不同,设置不同的偏移量,使其返回正确的数组长度。 一般用法:sizeof(array)/sizeof(array[0]) 上述用法就可以返回正确的数组长度,sizeof...

    C语言中返回数组长度

    sizeof(type)
    用来返回字节长度,可以根据每种类型的不同,设置不同的偏移量,使其返回正确的数组长度。
    一般用法:sizeof(array)/sizeof(array[0])
    上述用法就可以返回正确的数组长度,sizeof(array[0])是为了获得一个?数据所占的字节数。

    常用类型 一个?型数值占?字节
    short 2
    int 4
    float 4
    double 8
    char 1

    举个栗子:

    #include "stdio.h"
    int main()
    {
    	short a[]={1,2,3};
    	int b[]={1,2,3};
    	float c[]={1.0,2.0,3.0};
    	double d[]={1.0,2.0,3.0};
    	char e[]={'s','t','r'};
    	printf("%3d",sizeof(a));
    	printf("%3d",sizeof(b));
    	printf("%3d",sizeof(c));
    	printf("%3d",sizeof(d));
    	printf("%3d\n",sizeof(e));
    	printf("--------------------\n");
    	printf("%3d",sizeof(a)/sizeof(a[0]));
    	printf("%3d",sizeof(b)/sizeof(b[0]));
    	printf("%3d",sizeof(c)/sizeof(c[0]));
    	printf("%3d",sizeof(d)/sizeof(d[0]));
    	printf("%3d",sizeof(e)/sizeof(e[0]));
    }
    输出:
      6 12 12 24  3
    --------------------
      3  3  3  3  3
    

    注意:通过传递数组名参数到子函数中,以获取数组长度是错误的;因为子函数中的传递数组参数是一个指向真正数组的地址,而一个地址占4个字符。所以它返回的值永远是2(64位)或1(32位)。
    举个栗子:

    #include "stdio.h"
    int test(int array[])//子函数
    {
    	printf("错误:%d",sizeof(array)/sizeof(array[0]));
    }
    int main()//主函数
    {
    	int a[]={1,2,3};
    	printf("正确:%d\n",sizeof(a)/sizeof(a[0]));
    	test(a);//调用子函数
    }
    输出:
    正确:3
    错误:2
    
    展开全文
  • C语言里获取数组长度

    2021-02-27 10:54:16
    C语言无法直接获取数组长度,但可以用sizeof()关键字获取数组实际可存放元素个数(不是数组存放了多少元素) C语言里,通过传递数组名参数到子函数中,以获得数组长度是不可行的 先说1: 用 sizeof 可以获得数据...
  • C语言——计算数组长度

    千次阅读 2019-02-22 12:12:29
    C语言中,定义数组之后可以通过sizeof(a)/sizeof(a[0])的方法获得数组长度。 然而,当数组当作参数到子函数中,以上获取数组长度得到的结果永远是1. 因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统...
  • c语言没有String类型,更没有String.length()方法,那么要怎么求数组长度呢? 数组举例:int arr[]={2,3,1,4}, char str[]={“Hello”} 获得数组长度可以用这个方法: 比如int数组 sizeOf(arr)/sizeOf(int) 可以求出...
  • c语言中,定义数组后可以用sizeof命令获取数组长度(可容纳元素个数); 如: { int data[5]; int length; length=sizeof(data)/sizeof(data[0]);//数组占内存总空间,除以单个元素占内存空间大小 printf(...
  • C语言sizeof计算数组长度的问题

    千次阅读 2019-07-10 17:48:39
    c语言中,定义数组后可以用sizeof命令获得数组长度(可容纳元素个数)。 例如: int data[4]; int length; length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小 printf("length...
  • c语言中求数组长度

    千次阅读 2015-06-28 16:33:37
    例如: #include #include #define n 20 int main(){ char arr[n]; int num = strlen(arr);//该数组类型必须是char才能用strlen() int num2 = sizeof(arr); printf("strlen(arr)=%d\n",num);//
  • c语言中计算数组长度的方法

    千次阅读 2018-11-25 08:44:53
    strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(sizeof()包括结束字符) #include<stdio.h> #include<string.h> int main(){ char a[]={"abcdd"}; printf("用strlen...
  • C语言0长度数组(可变数组/柔性数组)详解

    万次阅读 多人点赞 2017-03-20 19:37:26
    C语言0长度数组(可变数组/柔性数组)详解 CSDN GitHub C语言0长度数组(可变数组/柔性数组)详解 AderXCoding/language/c/zero_length_array 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议...
  • C语言获取数组长度

    2021-07-06 20:59:04
    C语言获取数组长度C语言获取数组长度sizeof() C语言获取数组长度 int a[10] = {1, 2, 3, 4, 5}; int length = sizeof(a) / sizeof(a[0]); // length = 10 通过以上方式自动求出数组的长度; sizeof() sizeof 可以...
  • c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数) 如: { int data[4]; int length;...但,通过传递数组名参数到子函数中,以获得数组长度是不可行的。如: int getLength(int[]
  • c语言怎么获取数组长度

    千次阅读 2016-05-09 08:06:47
    c语言中,定义数组后可以用sizeof命令获得数组长度(可容纳元素个数) 如: { int data[4]; int length; length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小 printf(...
  • c语言不同类型返回数组长度用法

    千次阅读 2016-03-29 14:56:19
    C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言...
  • C语言 | 结构体数组

    千次阅读 2021-04-30 08:46:45
    C语言结构体数组概述 一个结构体变量中可以存放一组有关联的数据,如一个学生的学号...先声明一个结构体类型(如struct Person),然后再用此类型定义结构体数组:结构体类型 数组名[数组长度]。 C语言使用结构体数组注
  • C语言0长度数组(柔性数组

    千次阅读 2014-06-18 15:13:23
    C语言0长度数组(柔性数组) 0长度数组,又称为柔性数组(flexible array),通常用来实现变长数组,常见于TLV(type-length-value)的数据结构中。在标准 C 和 C++ 中,不允许用 0 长度数组,但在
  • c语言中获取数组长度写法

    千次阅读 2018-11-23 09:21:00
    首先对于一维数组,如: ...如何求取这些数组长度呢?可以使用sizeof(),但由于sizeof()返回的是字节长度,所以可以使用sizeof(x)/sizeof((x)[0])。 #include "stdio.h"#include "stdlib.h"#defin...
  • c语言数组长度

    千次阅读 2020-10-10 21:11:57
    C语言对于不同的数据类型数组长度方式稍微有不同的地方: 1,对于字符数组长度 第一种使用strlen() #include<stdio.h> #include<string.h> int main() { char a[10]="dmeo"; printf("%d",strlen...
  • c语言数组长度的计算 一维数组  计算数组的长度:       sizeof(数组名):得到这个数组占用内存的总长度       公式:        sizeof(数组名) / sizeof...
  • C语言获得数组长度的函数

    万次阅读 多人点赞 2018-09-06 17:05:15
    1、c语言中,定义数组后可以用sizeof命令获得数组长度(可容纳元素个数)。 例如: double a[] = {1,2,3,4}; int length; length=sizeof(a)/sizeof(a[0]); //数组占内存总空间,除以单个元素占内存空间大小 ...
  • C语言计算数组长度

    2019-03-06 23:17:03
    字符串计算数组长度是strlen(),不要忘记#include&lt;string.h&gt; 和它不带最后一个null就没什么大问题。 sizeof()函数,用来计算()内的对象或者类型所占的内存字节数。用其来计算数组长度的方式很简单,...
  • C语言基础——数组

    2021-05-13 16:50:54
    C语言基础——数组数组一维数组二维...这里定义了一个长度为10的数组,也就是可以连续的存储10个int类型的数据。其访问可通过下标进行读取(下标是从0开始计算)。 二维数组 定义 类型名 数组名[常量表达式][常量表达
  • c语言中的数组

    2015-03-02 20:06:29
    c语言中,数组属于构造数据类型。一个数组可以分解为多个数组员素,这些数组元素可以是基本数据类型或是构造类型。 一、 一维数组 1、一维数组的定义方式  在C语言中使用数组必须先进行定义。一维数组的...
  • 如何通过编程的手段获取某个数组长度呢? 答案是使用关键字 sizeof。 前面说过,用 sizeof 可以获得数据类型或变量在内存中所占的字节数。同样,用 sizeof 也可以获得整个数组在内存中所占的字节数。因为数组中每...
  • C语言一维数组

    2019-11-23 20:43:54
    C语言一维数组1.1一维数组的定义和应用1.一维数组的定义2.一维数组的应用1.2一维数组的初始化 1.1一维数组的定义和应用 1.一维数组的定义 ...常量表达式定义了数组中存放的数据元素的个数,既数组长度。 ...
  • C语言中的数组

    2020-09-14 18:54:04
    C语言中的数组 在实际中,需要批量处理大量同类型的数据时.,使用数组非常方便。 数组的定义: int a[10]; // 整型数组 float b[10]; // 实型数组 char s[10];...数组长度应大于等于1,且为常量,且

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,579
精华内容 35,031
关键字:

c语言int类型数组长度

c语言 订阅