2015-11-14 1 views
-1

У меня проблема с следующим кодом, я получаю ошибку: недопустимый аргумент типа унарного '*' (есть '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; 
} 
+0

Вы не можете разыменовать это выражение: '((ptab-> content) + pC1 + 17)' – 101010

+0

Что вы на самом деле пытаетесь сделать в этом коде? Каким будет правильный выход? (Есть несколько способов заставить это скомпилировать, но из вашего вопроса неясно, какой из них вы хотите - они имеют разные значения.) – pmdj

+0

Я хотел бы дать лучшую рекомендацию, чем «Переосмыслить, что вы здесь пытаетесь», но Я понятия не имею, что вы пытаетесь сделать. Лучшее объяснение цели этого кода может обеспечить лучшие результаты. – user4581301

ответ

0

С *((ptab->content)+pC1+17), простой способ сказать, что это ptab[pC1+17].content [последняя компилирует и производит 22 в качестве выходного сигнала]. Вы имели в виду это или ptab->content + pC1 + 17 [which производит 5]?

+0

Мне нужно перейти от указателей для указателей на структурные массивы, это была моя ошибка, извините – user153489

 Смежные вопросы

  • Нет связанных вопросов^_^