`
ackerman
  • 浏览: 75024 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c++显示传递数组时为什么要指定其长度?

阅读更多

#include <iostream>
const int SIZE = 5;
int sum_arr(int p[],int size);
int main()
{
        int sum;
        int arr[SIZE] = {1,2,3,4,5};
        std::cout << "sizeof (arr)=" << sizeof(arr) << ", address=" << arr <<std::endl;
        sum = sum_arr(arr,SIZE);
        std::cout << "sum of arr=" << sum <<std::endl;
        return 0;

}

int sum_arr(int p[], int size)
{
        int sum = 0;
        std::cout << "sizeof (p)=" << sizeof(p) << ", address=" << p <<std::endl;
        for (int i =0; i < size; i++)
                sum += p[i];
        return sum;
}

 输出如下:

 

ackerman@ubuntu:~/桌面/c++test$ ./a.out 
sizeof (arr)=20, address=0xbf9afa68
sizeof (p)=4, address=0xbf9afa68
sum of arr = 15
 
分享到:
评论

相关推荐

    C++习题 6数组与指针

    - **答案**:当使用数组名作为函数参数时,C++只传递数组首地址而不检查数组边界,因此不需要指定数组长度。即使指定了长度,也不会起到实际作用。 **5.2.4 如何编写对多维数组通用的算法?** - **解决方案**:...

    C#将字符串数组传递给C++ DLL.rar

    由于C++不支持数组作为参数,通常我们会使用指针和数组长度作为参数。例如,可以定义一个如下的函数原型: ```cpp extern "C" __declspec(dllexport) void ProcessStrings(int count, wchar_t** strings); ``` ...

    C++课程课件数组(郭艳燕老师)

    数组的下标从0开始,最大下标是数组长度减1,如`a[0]`到`a[9]`。 - **引用**:数组元素通过`数组名[下标]`的形式进行引用,下标可以是整型常量、整型表达式或变量,只要保证其值在有效范围内。例如,`a[0]`、`a[5]`...

    C++动态创建多维数组

    这里,`size`是我们运行时决定的数组长度。`new`会返回指向数组首元素的指针,我们可以像操作普通数组一样来访问和修改这些元素。 对于多维数组,C++提供了一种类似于声明多维数组的方式来动态创建。比如,创建一个...

    dll向C#传递数组.rar

    C++数组不包含其长度信息,因此在传递数组时需要特别注意。通常,除了数组指针外,还需要传递数组的长度信息,以避免缓冲区溢出和安全问题。 3. **C#中的数组类型** C#支持多种类型的数组,包括一维、多维和 ...

    C#调用C++DLL传递结构体数组的终极解决方案

    `MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)`确保`UniqueCode`数组长度固定,符合C++的预期。 尽管做了这些调整,但仍然可能遇到问题,因为C++函数可能期望接收结构体指针或结构体数组指针。因此,我们...

    c++调用C# COM 参数是结构体数组

    在这个例子中,我们定义了一个 _CAPI_Point3d 结构体数组,数组长度为 count。 Marshal 类 在 C# 中,Marshal 类是用于在托管代码和非托管代码之间进行数据类型转换的。例如,在本例中,我们使用 Marshal....

    C++学习通数组与指针

    知识点:在 C++ 中,要使指针 p 能够指向动态数组,需要将其定义为 double* 类型。 4. 单选题:假定 AB 为一个类,px 为指向该类动态对象数组的指针,该数组的长度为 n,则执行“delete[] px;”语句时,自动调用该...

    C#结构体和C++字节数组的转换

    在跨语言通信或数据交换中,尤其是在涉及到C#与C++之间进行TCP通信时,由于两者数据表示方式的差异,可能会遇到将C#中的结构体转换为C++可理解的字节数组,或者反过来的过程。本文将详细介绍如何在C#中实现结构体与...

    易语言源码向DLL传递数组参数的实现方法.rar

    在传递数组时,确保数组长度不超过DLL函数的预期,避免非法访问内存。 5. **示例代码**: 下面是一个简单的示例,演示如何向DLL传递整型数组: ```易语言 .整数型 数组 . myArray = {1, 2, 3, 4, 5} .整数型 ....

    C/C++中获取数组长度的方法示例

    在C/C++编程中,获取数组长度是一个常见的需求,但需要注意的是,这两种语言并没有内置的函数可以直接获取数组的长度。通常,我们可以通过两种方式来获取数组的元素个数,即计算数组占用的内存大小除以单个元素的...

    python调用c++传递数组的实例

    # 实例化一个长度为2的整型数组 input = INPUT() # 为数组赋值(input这个数组是不支持迭代的) input[0] = 11 input[1] = 2 input[2] = 3 input[3] = 4 dll.teststring.restype = c_char_p # bytes(aaaa, encoding=...

    std::string、char*、const char*转托管byte数组或托管字符串String

    std::string是C++的标准字符串类,它可以使用c_str()函数将其转换为char*类型,然后使用Marshal::Copy函数将其拷贝到托管的byte数组中,最后使用System::Text::Encoding::UTF8-&gt;GetString函数将byte数组转换为托管的...

    C++中CArray动态数组的使用.doc

    引用类型通常与元素类型相同,确保在传递数组对象时不会复制对象,而是传递引用,提高性能。 2. **设置数组大小**: 使用 `SetSize` 函数可以动态设定数组的大小,并分配相应的内存。例如: ```cpp m_Array.Set...

    c++指针与数组.ppt

    - 在作为函数参数时,多维数组的维度信息除了第一维外,其他维度应明确指定。 6. **指针数组与指向数组的指针** - `int *b[2]`是包含两个整型指针的数组,而`int (*b)[2]`是一个指向两个元素数组的指针。 - 指针...

    C#调用C++动态库实例程序,地址映射传参,

    3. **在C#中调用C++函数**:创建C#数组,然后调用`ProcessArray`函数,传递数组和其长度。注意,由于C++可能会修改数组,因此需要确保C#代码能感知这些变化: ```csharp int[] numbers = new int[] { 1, 2, 3, 4, 5 ...

    C++ 数组讲义大全(目录在描述里)

    其中 `type` 是数组元素的数据类型,`arrayName` 是数组的名称,而 `arraySize` 则是指定数组长度的常量表达式。 **示例**: ```cpp int myArray[5]; // 声明一个整型数组,大小为5 ``` 数组也可以在声明的同时...

    C++实验三 数组.pdf

    C++实验三 数组 一、数组 1. 一维数组 * 组成:相同类型元素组成的序列 * 先定义后引用 * 初始化/赋初值:编译阶段进行,即.obj和.exe中变量已有初值 * static数组:初始化列表,不完全初始化,特定元素初始化 ...

Global site tag (gtag.js) - Google Analytics