相关疑难解决方法(0)

数组名称是指针吗?

数组的名称是C中的指针吗?如果没有,数组的名称和指针变量之间有什么区别?

c arrays pointers

191
推荐指数
4
解决办法
6万
查看次数

当函数具有特定大小的数组参数时,为什么它被指针替换?

鉴于以下计划,

#include <iostream>

using namespace std;

void foo( char a[100] )
{
    cout << "foo() " << sizeof( a ) << endl;
}

int main()
{
    char bar[100] = { 0 };
    cout << "main() " << sizeof( bar ) << endl;
    foo( bar );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

main() 100
foo() 4
Run Code Online (Sandbox Code Playgroud)
  1. 为什么数组作为指向第一个元素的指针传递?
  2. 它是C的遗产吗?
  3. 标准说什么?
  4. 为什么C++的严格类型安全性下降了?

c++ arrays standards sizeof function-parameter

65
推荐指数
2
解决办法
3万
查看次数

计算数组的大小

我使用以下宏来计算数组的大小:

#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))  
Run Code Online (Sandbox Code Playgroud)

但是,当我计算函数中数组的大小(计算的值不正确)而不是调用函数的位置(计算的正确值)时,我看到它计算的值的差异.代码+输出如下.任何想法,建议,提示等.欢迎.

DP

#include <stdio.h>

#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))

void foo(int * arr) // Also tried foo(int arr[]), foo(int * & arr) 
                    // - neither of which worked
{
   printf("arr : %x\n", arr);
   printf ("sizeof arr: %d\n", G_N_ELEMENTS(arr));
}

int main()
{
   int arr[] = {1, 2, 3, 4};

   printf("arr : %x\n", arr);
   printf ("sizeof arr: %d\n", G_N_ELEMENTS(arr));

   foo(arr);
}
Run Code Online (Sandbox Code Playgroud)

输出:

arr : bffffa40
sizeof arr: 4
arr : bffffa40
sizeof arr: 1
Run Code Online (Sandbox Code Playgroud)

c c++

13
推荐指数
3
解决办法
1万
查看次数

如何找到阵列使用的内存

我已经看到以不同形式提出的这个问题,并且我一直在阅读它,但我仍然对如何找到使用的内存感到困惑。我有一个数组,它由一个指针指向,值 *ptr = 数组中的元素数。我需要数组及其元素的总大小(它是一个 short int 数组,总共有 14 个元素)。我对如何获得数组使用的内存值+元素使用的内存感到困惑,我是否只使用大小然后将两者相加。这是我不断遇到问题的地方。有人可以指出我正确的方向吗?

c++ arrays pointers sizeof

0
推荐指数
1
解决办法
494
查看次数

标签 统计

arrays ×3

c++ ×3

c ×2

pointers ×2

sizeof ×2

function-parameter ×1

standards ×1