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:
Ohne den Code laufen lassen zu haben, würde ich vermuten, das Problem lag hier:
C:
size_t elemente = sizeof(a)/size(int);
 
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 ...
 
Zurück
Oben Unten