Изменить индексацию массива с помощью указателей - C (СИ)
Формулировка задачи:
Ввыручайте товарищи, на КР по Си задания:
1)Дан массив целых чисел a[6][5][4]. Изменить индексацию массива на a[-2][7][0]
Дан массив целых чисел b[4][7]. Сделать так. чтобы последний элемент был [0][0].
Учитель сказал что в первой задаче надо создавать три указателя и с ними работать, но я облазил пол инета и не нашел подобного, спросил у знакомого он сказал что [-2] вобще не может быть.
нашел в инете чтото похожее:
но как это к трехмерному масиву привязать без понятия.
буду черезвычайно благодарен если кто нибуть подскажет как сделать эти две задачи.
подскажите как изменить индексацию массива на a[-2][7][0]
(чтобы начальный элемент стал [-2][7][0] )
#include int main() { float *q, **b; int i, j, k, n, m; scanf("%d %d",&n,&m); q=(float *)calloc(m,sizeof(float)); /* сейчас указатель q показывает на начало массива */ q[0]=22.3; q-=5; /* теперь начальный элемент массива имеет индекс 5, */ /* а конечный элемент индекс n-5 */ q[5]=1.5; /* сдвиг индекса не приводит к перераспределению */ /* массива в памяти и изменится начальный элемент */ q[6]=2.5; /* - это второй элемент */ q[7]=3.5; /* - это третий элемент */ q+=5; /* теперь начальный элемент вновь имеет индекс 0, */ }
Не по теме:
хм, слово помощью в назваании темы писать нельзя?
написал инициализацию трехмерного массива
#include <stdio.h> #include <malloc.h> int main() { int x=6,y=5,z=4,i,j,n,zz=0,*ptr; int ***k=(int***)malloc(x*sizeof(int**)); for(i=0;i<6;i++) { k[i]=(int**)malloc(y*sizeof(int*)); for(j=0;j<5;j++) k[i][j]=(int*)malloc(z*sizeof(int)); } for(i=0;i<x;i++) for(j=0;j<y;j++) for(n=0;n<z;n++){ k[i][j][n]=zz+1; zz++;} for(i=0;i<x;i++) for(j=0;j<y;j++) for(n=0;n<z;n++) printf("%3d",k[i][j][n]); }
Решение задачи: «Изменить индексацию массива с помощью указателей»
textual
Листинг программы
array[n] == *(array + n) ;
Объяснение кода листинга программы
В данном коде происходит проверка и изменение индексации массива с использованием указателей. Список действий:
array
- это имя массива.n
- это переменная, которая используется как индекс для доступа к элементам массива.*(array + n)
- это выражение, которое использует оператор разыменования*
для преобразования адреса в значение, и оператор сложения+
для смещения от начала массива на значение переменнойn
.array[n]
- это выражение, которое использует оператор доступа к элементу массива[ ]
, сn
в качестве индекса.- Результат выражения
array[n]
сравнивается с результатом выражения*(array + n)
, чтобы убедиться, что они равны. Если они не равны, то индексация массива должна быть изменена. Таким образом, в данном коде происходит проверка и изменение индексации массива с использованием указателей.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д