ich in diesem Code lautete:Pointers in C: Änderungen in einer Funktion
#include <stdio.h>
void foo(int* p1, int* p2)
{
p1 = p2;
*p1 = *p2 + 1;
}
void bar(int** p1, int** p2)
{
p1 = p2;
*p1 = *p2 + 1;
**p1 = **p2 + 2;
}
void main (void)
{
int n[] = {1,2,3};
int m[] = {4,5,6};
int *p1 = n;
int *p2 = m;
foo(p1,p2);
bar(&p1,&p2);
printf("%d %d\n",*p1,*p2);
}
Ich dachte, der Ausgang [1,5] sein wird, während es [1,7]. Kann jemand den Grund erklären?
Vielen Dank
Bitte den Code als Text in den Fragetext eingeben als ein Link. – SurvivalMachine
'void main (void)' hat ein undefiniertes Verhalten im C-Standard, es sei denn, es handelt sich um eine implementierungsdefinierte Art des Prototyping von 'main'. Siehe auch http://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c –
Ich habe den Code aktualisiert. meine Frage war über das Verhalten des Zeigers. –