почему моя программа показывает эту ошибку компиляции?

#c #arrays #pointers #multidimensional-array

#c #массивы #указатели #многомерный массив

Вопрос:

я изучаю c и только что добрался до указателей, и после прочтения о я начал практиковаться в этом, и я застрял на многомерном массиве и указателях. проблема, на которой я застрял, заключается в том, что моя программа не печатает элементы 2-го массива, это также выдает некоторые ошибки, я пытался найти решение, но не могу его найти, у меня есть общая фотография моей программы, вы можете посмотреть на нее, ссылка ниже

введите описание изображения здесь

спасибо

Комментарии:

1. ptrarr является указателем на int , *ptrarr является int и **ptrarr не имеет смысла, почему вы дважды разыменовываете?

2. я зашел на многие веб-сайты, и это показало мне то же самое. пожалуйста, скажите, как это исправить

3. Пожалуйста, отредактируйте свой вопрос, удалите изображение вашего кода и вставьте свой код в виде текста в свой вопрос.

4. подождите, я сделаю то же самое

Ответ №1:

Это ваш код

 #include <iostream>

using namespace std;

int main()
{
    int arr[2][3];
    arr[0][0]=1;
    arr[0][1]=8;
    arr[0][2] = 4;
    arr[1][0]=3;
    arr[1][1] = 6;
    arr[1][2] = 54;
    int* ptrarr=amp;arr[0][0];
    
    cout<<*(*(ptrarr 1) 1);

    return 0;
}
  

Что, по сути, вы делаете, так это присваиваете ptrarr адрес arr[0][0] . В cout инструкции ptrarr адрес увеличивается на arr[0][1] , затем откладывается (выводится значение этого адреса), которое является 8 (arr[0][1]=8) , а затем вы снова разыменовываете его, что ничего не значит, поскольку теперь у вас есть значение, а не адрес.

Это может решить вашу ошибку

 #include <iostream>

using namespace std;

int main()
{
    int arr[2][3];
    arr[0][0]=1;
    arr[0][1]=8;
    arr[0][2] = 4;
    arr[1][0]=3;
    arr[1][1] = 6;
    arr[1][2] = 54;
    int* ptrarr=amp;arr[0][0];
    
    cout<<*(ptrarr  (rowNumber*COL)   colNumber));

    return 0;
}
  

Где rownumber и colnumber — позиция, к которой вы хотите получить доступ, а COL — общее количество столбцов. В вашем случае это так 3 .

Итак, если вы хотите вывести, arr[1][2] вы сделаете

 cout<<*(ptr (1*3) 2);
  

Комментарии:

1. сэр, но я хочу значение из второго массива

2. Какой результат вы на самом деле ожидаете?

3. результат, который я ожидаю, равен 54

4. Теперь я отредактировал ответ. Теперь это будет работать. Для получения выходных данных как 54 , cout<<*(ptrarr (1*3) 2) поскольку они находятся в arr[1][2]

5. не могли бы вы, пожалуйста, объяснить, что это значит?? это будет полезно