Rückgabe Arraygröße

freakontour

Neues Mitglied
Guten Morgen,

ich hänge vermutlich an einem sehr einfachen Problem.
Ich initialisere ein Array und möchte dies nun mit den Werten ausgeben.
Jedoch wird die Schleife immer nur zweimal aufgerufen, da sizeof mir nicht den richtigen Wert ausgibt.
Wie kann man dies lösen?
C:
#include <stdio.h>
#include <math.h>
#include <stddef.h>

typedef int qmat[101];

void el_setzen(qmat,int,int);
int el_holen(qmat,int,int);
void qm_init(qmat,int,int);
void qm_aus(qmat);

int main(){
    qmat a = {0};
    int n = 5, w = 5;
    qm_init(a,n,w);
    qm_aus(a);
    
}

void qm_init(qmat a, int n, int w){
    printf("qm_init: %d\n\n",n);
    for(int i = 0; i< n*n; i++)
    {
        a[i] = w;
    }
    
}

void qm_aus(qmat a){
    printf("qm_aus\n");
    size_t elemente = sizeof(a)/size(int);
    printf("Elemente %ld\t %ld\n",elemente,sizeof(int));
    
    
    for(int i = 0; i< elemente; i++)
    {
        printf("%d  ",a[i]);
    }
    printf("\n");
}
edit: Problem wurde gelöst
 
Zuletzt bearbeitet von einem Moderator:

JR Cologne

Administrator
Teammitglied
Hallo @freakontour und willkommen im Forum!

Bist du so nett und teilst du noch die Lösung des Problems mit?
Dann ist das für andere, die vielleicht ein ähnliches Problem haben, auch ebenso hilfreich.
Danke! :)
 

BAGZZlash

Neues Mitglied
Ohne den Code laufen lassen zu haben, würde ich vermuten, das Problem lag hier:
C:
size_t elemente = sizeof(a)/size(int);
 

german

Aktives Mitglied
devCommunity-Experte
Absolut. Und wahrscheinlich kompiliert das nicht mal. Falls doch, ist size(int) (statt sizeof) eine implizite Funktionsdeklaration. Und sizeof(a) würde durch eine Speicheradresse dividiert werden.
Ach ... ich glaub immer noch dass kein Compiler der Welt so dämlich ist, das durchzuwinken ...
 
Oben Unten