精华内容
下载资源
问答
  • C++数组长度

    千次阅读 2017-07-25 11:51:07
    C++数组长度为: int arr_length = sizeof(arr) / sizeof(arr[0]); 为了方便使用,在C语言中常定义宏来求数组长度 #define ARR_LEN(array, length){ length = sizeof(array) / sizeof(array[0]); } 使用时...
    C++求数组长度为:
    

    int arr_length = sizeof(arr) / sizeof(arr[0]);

    为了方便使用,在C语言中常定义宏来求数组长度

    #define ARR_LEN(array, length){ length =  sizeof(array) / sizeof(array[0]); }

    使用时,直接调用宏函数即可,如

    int arr[]={1,2,3,4,5};

    int len;

    ARR_LEN(arr, len);  //此时len赋值为5

    在C++中,也可以定义模板函数

    template <class T>

    int getArrayLen(T &array){

    return sizeof(array) / sizeof(array[0]);

    }

    使用时,调用模板函数,如

    string arr[]={"abc", "ab", "abcde", "1234567", "890"};

    int len=getArrayLen(arr);  //此时len赋值为5


    //  **************************  注意!!!!********************************  //

    当数组传入函数时,传入的是指针,指针仅指向数组头arr[0],不带有任何长度信息,所以在传入数组时,要把数组长度同时传入函数。

    可以考虑一下,下面这个函数调用时,会输出什么?

    void length_array(int arr[]){ 

    int len=getArrayLen(arr);

    cout<<"len="<<len<<", sizeof(arr)=" << sizeof(arr)<<endl;

    }

    Output: len=1, sizeof(arr)=4;

    这是因为arr是指针,而指针所占空间是4个字节,所以sizeof(arr)/sizeof(arr[0])=1.

    //  ****************************************************************************************

    请牢记:如果把数组作为参数传入函数,那么这个数组会退化为一个指针 int *arr

     ****************************************************************************************  //


    下面说一下size(), length(), strlen()

    先说 size() 和 length(),这两个方法都要先 include <string>,两者使用起来无任何差别。

    即,str.size() == str.length() 为真

    引用cplusplus.com中的话:

    Both string::size and string::length are synonyms and return the same value, which is the length of the string, in terms of bytes.

    而 strlen() 是<cstring>中的,是C语言的遗留物。

    引用cplusplus.com中的话:

    cstring::strlen returns the length of the C string str. In C++, char_traits::length implements the same behavior. 

    即 strlen(str) == str.length() == str.size() 为真

    #include "iostream"
    #include <string>
    using namespace std;
    
    int main()
    {
        int *d = new int[10];
        cout << sizeof(d) << endl; // 4    d是我们常说的动态数组,但是他实质上还是一个指针,所以sizeof(d)的值是4。
    
        cout << sizeof(string*) << endl; // 4
        cout << sizeof(int*) << endl; // 4
        cout << sizeof(char****) << endl; // 4
        //可以看到,不管是什么类型的指针,大小都是4的,因为指针就是32位的物理地址。
        // 结论:只要是指针,大小就是4。(64位机上要变成8也不一定)。
    
        int Array[] = { 1, 2, 3, 4, 5, 6};
        int ArrLen = sizeof(Array) / sizeof(Array[0]);
        cout << sizeof(Array) << sizeof(Array[0])<< ArrLen << endl;  //24 4 6
        
        char aa[] = "abcdef";
        cout << sizeof(aa) << sizeof(aa[0]) << sizeof(aa) << endl;  //7 1 7
    
        char str[20] = "0123456789";
        int a = strlen(str); //a=10; 
        int b = sizeof(str); //而b=20; 
        cout << a << b << endl;
    
        string str1 = "hello";
        cout << str1.length() << str1.size() << endl; //55
        cout << sizeof(str1) << endl;//28
        cout << sizeof(string) << endl; //28  无论你的string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。   
        cout << str1.size() / str1.length() << endl;//返回字节数
    
        char* ss1 = "012345678";
        cout << sizeof(ss1) << endl;//4
    
        getchar();
        return 0;
    }


    参考文献及资料

    http://www.cplusplus.com

    http://blog.csdn.net/bopzhou/article/details/6063163

    http://henry-roamer.lofter.com/post/261768_698d3bd

    展开全文
  • c++ 数组长度

    2019-09-25 07:39:27
    数组长度求解 sizeof template <class T>int getArrayLen(T &array){ return (sizeof(array) / sizeof(array[0]));} 转载于:https://www.cnblogs.com/searcherY/p/6667105.html

    数组长度求解

    sizeof

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

    转载于:https://www.cnblogs.com/searcherY/p/6667105.html

    展开全文
  • C++ 数组长度

    千次阅读 2018-08-02 23:40:26
    初学c++,到数组的时候想手动写一下循环输出数组内容的简单循环,int arrayint[]=(1,2,3,4,5);  for (size_t i = 0; i &lt;sizeof(arrayint); i++)  {  cout &lt;&lt; arrayint[i] &lt;&...

    初学c++,到数组的时候想手动写一下循环输出数组内容的简单循环,int arrayint[]=(1,2,3,4,5);

        for (size_t i = 0; i <sizeof(arrayint); i++)
        {
            cout << arrayint[i] << endl;
            cout << "i="<<i << endl;

        }

    结果发现输出内容不对,i的值远远比size大,于是查资料了解一下sizeof是什么作用:

    sizeof是一个操作符(operator)。

    其作用是返回一个对象或类型所占的内存字节数。

    就是说它是用来描述一个对象占多少内存字节数的,

    所以它的数组大小看网上资料应该是sizeof(arrayint)/sizeof(arrayint[0]);

    之所以这么做是因为C++里给数组每个数据分配的内存大小是一样的

    另外一种方法是使用vector,不做赘述。

     

    展开全文
  • c++数组长度问题

    2018-03-08 14:02:39
    c++ 规定不能使用变量作为数组长度(虽然在ubuntu下编译不会出问题,但在其他系统可能就会报错),必须使用常量例如:int num=10;int array[num]; //报错const int num=10;int array[num];//正常这是因为数组作为...

    c++ 规定不能使用变量作为数组的长度(虽然在ubuntu下编译不会出问题,但在其他系统可能就会报错),必须使用常量

    例如:

    int num=10;

    int array[num];  //报错


    const int num=10;

    int array[num];//正常


    这是因为数组作为c++的内置数据类型,是在栈中分配内存,其大小需要在编译时就确定,不能等到运行时在分配。(常量的值在编译时就已经确定)

    但如果在堆上申请内存,其大小可以使用变量,

    例如:int a=new int[num]; //内存空间会在运行时动态分配


    展开全文
  • C/C++数组长度的获取

    2018-11-05 13:26:35
    一维数组的长度网上有比较多的说明,而我正好要用到二维数组长度的获取 所以整理一下记录下来: 言归正传 在C++里,字符串长度可以用strlen()函数获取,但是C++不支持数组的长度直接获取,所以我们要用数组的...
  • C++数组长度可以为变量吗?

    千次阅读 2020-05-25 21:51:45
    关于C++数组提出几点问题: 预备 先看下这两段代码 变量作为数组的长度可行吗? #include <iostream> using namespace std; void func(int num) { int array[num]; // num > 0 cout << "num ...
  • 在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度?如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有strlen() (需要#include &...
  • 利用C++的泛型编程,我们可以想到一个获取数组长度的小技巧。代码如下:#include &lt;iostream&gt; typedef unsigned array_size; template &lt;typename Type, array_size length&gt; array_size ...
  • C++ 数组长度不能为0

    2017-06-14 21:39:15
    C++长度为0的数组是不允许的,如果不给长度,编译器不会给数组分配空间,使用时会出现难以预料的错误。 一个典型的错误示例 #include #include using namespace std; class test { public: int scores[]; int...
  • C++数组长度求解

    2016-10-09 16:29:31
    下面a[len]应该是越界了,如何判断各种数据类型数组的结束标志,可以使用sizeof(数组)/sizeof(数据类型),但在传递数组参数时,该如何使用,因为传参时传进去的实际上是地址而非数组值,谢谢。 #include <...
  • sizeof()是一个运算符可以获取数组的字节数,再除去数组的一个元素的字节数,就可以得到数组长度了 #define size(num,n) sizeof(num)/sizeof(num[0])//num[0]可以换成任意一个数组元素 //or: int len = sizeof(num...
  • C++数组长度问题

    千次阅读 2016-01-19 20:53:10
    今天写代码的时候突然发现个问题,有类似这样一个函数,数组作为参数 void FormHead::ShowNum(intnumOfBoth[]) {  if(curMapId== 3)  {  FlashValueconditionNum[4];  conditionNum[0].SetInt(numOfBoth...
  • http://vivi.dyndns.org/tech/cpp/vector.html 长度未知 时使用vector
  • c++数组长度 函数传参

    2015-10-27 10:35:28
    //session 1: 计算出数组长度 printf("%d\n",sizeof(array)/sizeof(array[0])); Count_array_element_ptr(array); Count_array_element_array(array); return 0; } 运行结果是10,1,1,为什么第二函数...
  • 最近敲的代码题都是关于要把数据输入数组进行操作但是没有数组长度的问题,每次都要自己搜索很多才能找到结果,于是决定自己来总结一下,希望能给广大网友帮助。 首先,先讲两个经常用的输入。 cin 和gets: cin是...
  • c++获取数组长度查找算法 介绍 (Introduction) In this article, we are going to learn about the various ways following which we can find array length in C++. 在本文中,我们将学习在C ++中可以找到数组长度...
  • C/C++ | 求数组长度 | 求字符串数组长度 | 求string类型长度; 数组长度 int arr[] = {1,2,3,4,5,6,7,8,9}; int length = 0; length = sizeof(arr) / sizeof(int); int arr[10]={0,0}; //这样的无法...
  • C++ 获取数组长度

    2020-07-14 14:44:59
    C++ 获取数组长度 1 字符串数组 对于字符串数组,使用strlen()函数来获取字符串数组的长度。 char a1[] = "fwegweasdasdwqew"; cout << strlen(a1) << endl; 2 数字数组 例如: int arr[] = { 1,5,9,10...
  • C++改变数组长度

    2018-06-05 20:20:00
    C++改变数组长度 代码 //改变数组长度 #ifndef CHANGELENGTH1D_H #define CHANGELENGTH1D_H #include<stdexcept> #include<algorithm> template<typename T> void changeLength1D(T *&a,...
  • C++获取数组长度

    千次阅读 2017-06-01 00:02:51
    C++获取数组长度 一、静态数组。 比如 int int_ary[5] ,静态数组在编译的时候就知道了数组长度,这对编译器来说挺好实现的。 用得最多的大概就是sizeof了吧: 1
  • #include "Program.h"#include "ArrayTest.h"#include "Common.h" #define GETARRAYLEN(datas,len){ len = sizeof(datas)/sizeof(datas[0]);...//C++语言获取数组长度的方法template<class T>int...
  • C++表示数组长度

    千次阅读 2016-01-02 10:44:37
    C++表示数组长度:sizeof(array) / sizeof(array[0]) 注意这里的array是数组名不是数组指针
  • c++长度的方法很局限吧,我目前只知道 int a[10]; int length = sizeof(a)/sizeof(a[0]); cout << length; 坑呀坑! 写二分查找的时候,发现这样一个问题,把一个数组的地址传入内部,然后求它的长度和外部...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,079
精华内容 2,831
关键字:

c++数组长度

c++ 订阅