我目前正在阅读有关C ++的教程,其中包含以下内容:
当传递更高维度的数组时,只能打开第一个维度,而在编译期间必须知道其他维度。
我需要对此进一步解释。将1D数组(int a[]
)传递给某个函数f()
时,数组会衰减为指针int* a
。我假设上面的语句暗示例如int a[][]
的2D数组衰减到int *a[]
或者说它只能动态分配第一个维度(这是无意义的)。具体来说,“只有第一个维度可以打开”的说法是什么?这是我能够提出的唯一两个解释。
答案 0 :(得分:1)
作者说如果一个数组是int a[5][10]
并且你想要将该数组传递给某个函数,那么在函数声明中你可以编写接受该数组作为int x[][10]
的参数,甚至是参数int x[][10]
1}}衰减到int (*x)[10]
无论如何,传递2D数组的好方法是:
template<typename T, int first,int second>
void someFunction(T (&array)[first][second])
{....}
我假设上面的陈述暗示了一个2D数组 示例int a [] []衰减到int * a []
int a[x][y]
衰减到int (*a)[y]
,即a
是y
整数数组的指针,与int *a[y]
不同,这意味着a
是y
var classNames = document.getElementsByClassName("list-item-title");
var i;
for (i = 0; i < classNames.length; i++) {
classNames[i].style.fontWeight = 'bold';
}
var i;
var xhr;
var obj;
var employerNames = document.getElementsByClassName("list-item-body");
document.getElementsByClassName("lst-head-l")[0].insertAdjacentHTML('afterend', "<a href='https://www.glassdoor.com/index.htm'><img src='https://www.glassdoor.com/static/img/api/glassdoor_logo_80.png' title='Ratings Provided by Glassdoor' /></a>");
var apiURL = "https://api.glassdoor.com/api/api.htm?t.p=51863&t.k=kPRnCOceJPO&userip=0.0.0.0&useragent=&format=json&v=1&action=employers&q=";
for (i = 0; i < employerNames.length; i++) {
var xhr = new XMLHttpRequest();
xhr. open("GET", apiURL + employerNames[i].children[2].children[0].innerHTML, false);
xhr.send();
var obj = JSON.parse(xhr.responseText);
if (obj.response.totalRecordCount != 0) {
var child = employerNames[i].children[2].children[0];
var rawRating = obj.response.employers[0].overallRating;
var rating = Math.round(rawRating);
var link = "http://www.glassdoor.com/api/api.htm?version=1&action=employer-overview&t.s=w-m&t.a=c&employerId=" + obj.response.employers[0].id;
var text = "<a href=\"" + link + "\"> <b style=\"color: #7cb228; font-size: 120%;\" title=\" " + rawRating + " \">";
for (var k = 0; k < rating; k++) {
text += "★";
}
for (var k = 0; k < (5 - rating); k++) {
text += "☆";
}
text += "</b>";
child.insertAdjacentHTML('afterend', text);
// employerNames[i].children[2].innerHTML += " <b style=\"color: black\">(" + obj.response.employers[0].overallRating + ") ★ </b>";
}
}
int指针数组。
答案 1 :(得分:1)
如果你有一个二维数组,例如
int a[M][N];
然后在表达式中使用,例如在参数表达式中,如果相应的函数参数不是引用,则将其隐式转换为指向其第一个元素int ( * )[N]
的指针。
例如,你可以写
int ( *p )[N] = a;
你可以通过以下方式想象它。
如果您有阵列
T a[M};
然后它在表达式中被隐式转换为指向其第一个元素T *
的极少数例外。
如果你有一个二维数组
int a[M][N];
你可以用以下方式表示
typedef int T[N];
T a[M];
所以指针看起来像
T *p = a;
其中类型T是一维数组int [N]