Ongeldig type argument van unary ‘*’ (hebben ‘int’) fout in C

Fouten: “Initialisatie maakt integer uit de aanwijzer zonder een gegoten [-WINT-conversie]” en “Ongeldig type argument van Unary” * “(hebben ‘INT’)”. Eerste fout wordt tweemaal getoond voor de initialisatie van hierboven.
Tweede fout wordt weergegeven voor elke afdrukafschrift.

Ik weet niet zeker wat er mis gaat, iemand weet hoe ik dit kan oplossen?


Antwoord 1, Autoriteit 100%

U bent vergeten pen qintPointers. U bent ook vergeten het formaatspecificator in de printfuitspraken te gebruiken. Probeer het volgende:

#include <stdio.h>
#include <stdlib.h>
/*
* 
*/
int main() {
  int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
  int *p = &a[1];
  int *q = &a[5];   
  printf("%d\n", *(p+3));
  printf("%d\n", *(q-3));
  printf("%d\n", *q-*p);
  printf("%d\n", *p<*q);
  return (EXIT_SUCCESS);
}

Antwoord 2, Autoriteit 17%

&a[3](of &a[5]) is een wijzertype, dat wil zeggen int *.

pwordt gedefinieerd als int.

Dus je moet het definiëren van pen qals int *, zoals deze:

int * p = &a[1];
int * q = &a[5];

Antwoord 3, Autoriteit 17%

De unary-operator &levert het adres van zijn operand op. Het type is van T *, NIET T. Daarom kunt u geen int *toewijzen aan een intzonder een cast. De uitdrukking

&a[1]

levert het adres op van a[1].

Ik denk dat je de variabelen wilt definiëren als verwijzingen naar int, niet alleen naar ints.

int *p = &a[1];
int *q = &a[5]; 

Other episodes