Немного теории:
Любой доступ к элементу массива, осуществляемый с операции индексирования может быть осуществлен при указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
В данном задании:
int a[]= {7,8,9} - инициализация массива. По сути, это описание и присваивание значения одновременно. После выполнения этой строчки: a[0]=7; a[1]=8; a[2]=9 - массив из трех элементов, нумерация с нуля.
int *b=a - Эта строчка переводится как "создаем переменную b типа указатель на целое и присваем ему адрес нулевого элемента массива".
*(b+2)=b+1 - очень странная запись.
*(b+2) равносильно a[2] - значение последнего элемента данного массива. Переменная b содержит целое число, которое является адресом нулевого элемента массива. b+1 - указатель "сдвигается на 1 элемент вправо", т.е (b+1) - адрес первого элемента массива.
То есть данная запись означает, что в последний элемент массива(a[2] в данном случае) записывается адрес первого элемента массива(a[1] в данном случае).
b[1] - такая запись указателя с индексом равносильна a[1] - значению первого элемента массива.
В итоге: b[1] <=> a[1]=8
Примечание:
Изначально ваша программа не выполниться, так как запись int b*=a - неверная(правильно int *b=a)
#include <iostream>
using namespace std;
int main()
{
int N, N1;
cout << "kol-vo ctrok ";
cin >> N;
cout << "ko-lvo ctolbcov ";
cin >> N1;
int** mtrx = new int* [N1];
for (int i = 0; i < N; i++)
{
mtrx[i] = new int[N1];
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N1; j++)
{
cin >> mtrx[i][j];
}
}
cout << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N1; j++)
{
cout<< mtrx[i][j]<<" ";
}
cout << endl;
}
for (int i = 0; i <= trunc(N/2); i++)
{
for (int j = 0; j <= trunc(N1/2); j++)
{
int tmp = mtrx[N - 1 - i][N1-1-j];
mtrx[N - 1 - i][N1 - 1 - j] = mtrx[i][j];
mtrx[i][j] = tmp;
}
}
cout << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N1; j++)
{
cout << mtrx[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < N; i++)
{
delete[] mtrx[i];
}
delete [] mtrx;
return 0;
}
Поделитесь своими знаниями, ответьте на вопрос:
за ответ Задание 1. Дана программа:var a, b, c, i:integer; x:rеаl;beginrеаd(a, b, c);x := (b+c)/2;fоr i:=a to b dоif i mоd 2 <> 0 then х:=x+i; x:=х*2;writеln(x);еnd.Что она выведет на экран, если пользователь введет три числа: -2, 10, 1:Укажите в таблице, что происходит на каждой итерации цикла:Когда i = ;x = Когда i = ; x = Когда i = ; x = Когда i = ; x = Когда i = ; x = ...Когда i = ;x = ...Когда i = ;x = ...Когда i = ;x = ...Когда i = ;x = ...Когда i = ;x = ...
эмм посмотри в интернете
Объяснение: