Permalänk
Medlem

Skriva ut minnesadresser i C

Hej,

Jag har fått en uppgift där jag ska skriva ett program i C som ska åskådliggöra minnet grafiskt (dvs. visa med pilar hur pekare pekar på minnet och dess innehåll). Alltså skriva ut vilka minnesadresser data ligger på.

Jag kommer verkligen inte fram till hur man ska göra detta, kan någon hjälpa?

int main(void) { double **a; int n, m, i, j; printf("Give dimensions (rows, columns):"); scanf("%d %d", &m, &n); a = create_dyn_arr(m, n); if (a) { for (i=0; i<m; i++) { printf("Enter row %d:", i+1); for (j=0; j<n; j++) { printf(" col %d:", j+1); scanf("%lf", &a[i][j]); } } /* print_memory() */ }

Det är då "print_memory()" funktionen som ska visa upp vilka minnesplatser allt ligger på.

MVH
Freddie

Visa signatur

Chassi: Antec 902 - CPU: Intel i5 6800k + Corsair Hydro H100 - GPU: Gigabyte GTX 1070 - PSU: Fractal Design Tesla 650w80+ - Moderkort: Asus Prime- RAM: 16 GB 1600 Corsair vengance LP - OS: Windows 10 Pro - SSDs: Intel 330 120gb, Intel 335 240gb HDD: WB Blue 1tb, Hitachi 500gb QNIX QX2710 2560x1440
Laptop: Acer E1-571, i7-3632QM Windows 10

Permalänk
Permalänk
Datavetare

För att skriva ut en pekare med printf() så kan du använda %p.

#include <stdio.h> main() { int arr[3][3]; int c, r; for (r = 0; r < 3; r++) { printf("R=%d\t", r); for (c = 0; c < 3; c++) { // skriv ut adressen på cellen på rad 'r' och kolumn 'c' printf("C=%d P=%p\t", c, &arr[r][c]); } printf("\n"); } }

&arr[r][c] blir värdet på minnecellen där heltalet på den raden/kolumnen ligger lagrad.

Edit: i mitt fall så är värdet som ligger lagrat helt ospecificerat då jag aldrig skrivit ner något. Går ju alltid att sätta ett specifikt initialt värde så här

int arr[3][3] = { { 11, 12, 13 }, { 21, 22, 23 }, { 31, 32, 33 } };

Är man bara intresserad av adressen av cellen så spelar det ingen roll vilket värde som ligger där, men kan vara lite enklare att förstå/studera om det ligger ett känt värde i varje cell.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer