У меня проблема с следующим кодом, я получаю ошибку: недопустимый аргумент типа унарного '*' (есть 'int'). Если я напишу int *content
, который позволяет запустить код, но я должен написать int=content
и изменить код *((ptab->content)+pC1+17)
, я попытался, но я не могу исправить ошибку.Недопустимый тип аргумента с использованием указателя на массив struct
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <iomanip>
#include <stdio.h>
#include <Windows.h>
using namespace std;
struct box{
int content;
};
struct box *ptab;
int pC1=5;
int main(){
ptab=new struct box[64];
if (*((ptab->content)+pC1+17)==0) {
pC1=pC1+17;
}
cout<<pC1<<endl;
}
я должен перейти от указателей на poninters на структуру массивов, этот код является примером, так как исходный код имеет 23000 строк.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <iomanip>
#include <stdio.h>
#include <Windows.h>
using namespace std;
int *box;
int pC1=5;
int main(){
box=new int[64];
if (*(box+pC1+17)==0){
pC1=pC1+17;
}
cout<<pC1<<endl;
}
Вы не можете разыменовать это выражение: '((ptab-> content) + pC1 + 17)' – 101010
Что вы на самом деле пытаетесь сделать в этом коде? Каким будет правильный выход? (Есть несколько способов заставить это скомпилировать, но из вашего вопроса неясно, какой из них вы хотите - они имеют разные значения.) – pmdj
Я хотел бы дать лучшую рекомендацию, чем «Переосмыслить, что вы здесь пытаетесь», но Я понятия не имею, что вы пытаетесь сделать. Лучшее объяснение цели этого кода может обеспечить лучшие результаты. – user4581301