Il mio codice è:Come printf un indirizzo di memoria in C
#include <stdio.h>
#include <string.h>
void main()
{
char string[10];
int A = -73;
unsigned int B = 31337;
strcpy(string, "sample");
// printing with different formats
printf("[A] Dec: %d, Hex: %x, Unsigned: %u\n", A,A,A);
printf("[B] Dec: %d, Hex: %x, Unsigned: %u\n", B,B,B);
printf("[field width on B] 3: '%3u', 10: '%10u', '%08u'\n", B,B,B);
// Example of unary address operator (dereferencing) and a %x
// format string
printf("variable A is at address: %08x\n", &A);
Sto usando il terminale in menta linux per la compilazione, e quando provo a compilare utilizzando gcc ottengo il seguente messaggio di errore:
basicStringFormatting.c: In function ‘main’:
basicStringFormatting.c:18:2: warning: format ‘%x’ expects argument
of type ‘unsigned int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("variable A is at address: %08x\n", &A);
Tutto quello che sto cercando di fare è stampare l'indirizzo in memoria della variabile A.
'void main()' dovrebbe essere 'int main (void)'. Se il tuo libro, tutorial o istruttore ti ha detto di usare 'void main()', trova uno migliore. –
@KeithThompson Che importanza ha? –
@PrakharAgrawal: è importante perché lo standard ANSI C del 1989, che ha introdotto la parola chiave 'void', ha anche specificato che la funzione principale può essere definita come' int main (void) {/ * ... * /} '. Non dice nulla su 'void main()', e un'implementazione conforme può rifiutarla. Ci sono molti libri ed esercitazioni che suggeriscono l'uso di 'void main()'; questa è una forte indicazione che l'autore non conosce molto bene la lingua. (Questo è per le implementazioni ospitate.Per le implementazioni indipendenti, in cui il programma non viene eseguito con un sistema operativo, il punto di ingresso del programma è definito dall'implementazione –