1

这是我的例子:

#include "stdafx.h"
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    int ar[][3] = {1, 2, 3, 4, 5, 6, 7};
    //cout << int[3]<<endl; // error C2062: type 'int' unexpected.
    cout << "sizeof(ar) / sizeof(int[3])  "<< sizeof(ar) / sizeof(int[3]) << endl;; 

    system("pause");

    return 0;
}

它来自一本书,但没有给出解释。这里的 int[3] 是什么,为什么在这种情况下它只作为 sizeof 的参数起作用?

4

3 回答 3

4

int[3]是一个类型声明,表示一个由三个整数组成的数组。

您的注释代码给出了错误,因为您不能将类型用作变量。

于 2013-01-15T17:37:56.837 回答
2

sizeof(int[3])是由三个整数组成的数组的大小,以字节为单位。sizeof不是在程序运行时调用的实际函数 - 它在编译时被解析。sizeof(ar) / sizeof(int[3])将为您提供数组中的行数,因为每行的长度为 3 个整数(您将其声明为int ar[][3])。

于 2013-01-15T17:37:50.317 回答
2

宣言

int ar[][3] = {1, 2, 3, 4, 5, 6, 7};

用于整数三元组数组 - 它是一个二维数组。

表达式的大小

cout << "sizeof(ar) / sizeof(int[3])  "<< sizeof(ar) / sizeof(int[3]) << endl;

打印您获得的完整三元组的数量。最后一个整数 7 不会落入任何三元组。您应该看到 2 打印出来。 ar[0]将包含{1, 2, 3}并将ar[1]包含{4, 5, 6}.

于 2013-01-15T17:52:17.113 回答