如果类型很短(2 字节),为什么要为函数的可变参数分配 4 字节的 RAM?
根据 dgzargo 的要求
当我们探索数组时,出现了 2 个问题:
一。
#include <iostream>
using std::cout;
using std::cin;
int main (void)
{
setlocale(LC_ALL, "ru");
int a[5];
cout << a << "\n" << &a << "\n";
system("pause");
}
为什么显示相同的地址?读取时,а- 数组第一个元素上的指针。我们输出第一个元素的地址,然后输出指向它的指针的地址,但地址是相同的。你能澄清一下情况吗?
2. 录音
int a[5]
和
int (*a)[5]
第二个示例是什么意思,如何使用它(使用 new)以及它与第一个示例有何不同。
动态(JIT)编译和代码解释有什么区别?(可能问题放错了,但是我是初学者,怎么办。我在网上找了一个答案,但显然没有找到(可能我看的不太好))(拜托, 不做简化, 尽可能详细)
我正在学习 C++,我学习了函数模板——为了训练,我编写了以下程序(SortArray 函数按升序对结果数组的元素进行排序)。尝试执行时,它会给出错误 C2760(程序无法编译)。你可以解释吗?(请详细说明,如果我在解释中不清楚,那么我会在进一步研究的过程中弄清楚)。
#include <iostream>
using std::cout;
using std::cin;
template <typename t> void SortArray(t a[], const __int8 LENGTH)
{
__int8 ielem;
t elem;
for (__int8 n = 0; n < LENGTH; n++)
{
for (__int8 n1 = n; n1 < LENGTH; n1++)
if (a[n1] < a[ielem]) || (n1 == n) ielem = n1;
elem = a[n];
a[n] = a[ielem];
a[ielem] = elem;
}
}
int main()
{
const __int8 A_SIZE = 10, B_SIZE = 5;
float a[A_SIZE];
int b[B_SIZE];
setlocale(LC_ALL, "Ru");
cout << "Введите элементы первого массива через пробел или через Enter:\n";
for (__int8 i = 0; i < B_SIZE; i++)
cin >> b[i];
SortArray<int>(b, B_SIZE);
cout << "Отсортированный по возрастанию массив:\n";
for (__int8 n = 0; n < B_SIZE; n++)
cout << b[n] << " ";
cout << "\n";
cout << "Введите элементы второго массива через пробел или через Enter:\n";
for (__int8 n = 0; n < A_SIZE; n++)
cin >> a[n];
SortArray<float>(a, A_SIZE);
cout << "Отсортированный по возрастанию массив:\n";
for (__int8 n = 0; n < A_SIZE; n++)
cout << a[n] << " ";
cout << "\n";
system("pause");
}