У меня есть этот вопрос в моей домашней работе на C++.Функция, которая использует массив указателей
Написать и протестировать расположение функции, которая принимает, как показано ниже, в таблице указателей на целых р, размер такой таблицы п и значение х целого.
int* location (int* p [ ], int n, int x);
расположение ищет множество целых чисел, на который указывает таблицу указателей р для соответствия значению х. Если найдено подходящее целое число , тогда местоположение возвращает адрес этого целого числа, NULL в противном случае.
Я не уверен, что полностью понимаю вопрос. Однако я попытался его решить, но у меня возникла ошибка (программа вылетает). Вот мой код.
#include<iostream>
using namespace std;
int* location (int* p [ ], int n, int x);
void main(){
int arr[3]={1,2,3};
int *ptr=arr;
int *address= location (&ptr, 3, 2);
cout<<&arr[3]<<" should be equal to "<<address<<endl;
}
int* location (int* p [ ], int n, int x){
for(int i=0; i<n; i++){
if(*p[i]==x){return p[i];}
}
return NULL;
}
Может кто-нибудь, пожалуйста, покажите мне свою ошибку или скажите, правильно ли я решаю вопрос?
Благодаря
Я бы сказал, что проблема заключается в 'return NULL;'. –
Как показано ниже, вы передаете указатель на массив целых чисел в функцию. Вам нужно передать массив указателей на целые числа в функцию. –
Напишите код '* (p [i])' или '(* p) [i]', чтобы ваш код был очищен. (Согласно описанию, вы хотите первый) –