Följande kod, som inte gör något direkt meningsfullt, fungerar som jag förväntar mig:
Kod: Markera allt
#include <stdio.h>
#include <string.h>
void Reset(int*);
int main(int argc, char** argv) {
int buffer[25];
int i;
memset(buffer,0,sizeof(buffer)); // Nollställer matrisen.
for (i=0; i<25; i++){
printf("buffer(%d): %d\n",i,buffer[i]);
}
return 0;
}
Sagt och gjort:
Kod: Markera allt
#include <stdio.h>
#include <string.h>
void Reset(int*);
int main(int argc, char** argv) {
int buffer[25];
int i;
Reset(buffer);
for (i=0; i<25; i++){
printf("buffer(%d): %d\n",i,buffer[i]);
}
return 0;
}
void Reset(int x[]){
int i;
memset(x,0,sizeof(x));
for (i=0; i<25; i++){
printf("x(%d): %d\n",i,x[i]);
}
}
I funktionen Reset verkar problemet ligga i ”sizeof(x)”, för om jag ersätter det med ”100” (fyra bytes per element, 25 element) så fungerar det.
Jag är lite konfunderad och kan inte riktigt förstå detta, så jag är tacksam för om jag kan få en liten förklaring om detta…