C Skicka adresser och pekare till funktioner

I den här handledningen lär du dig att skicka adresser och pekare som argument till funktioner med hjälp av exempel.

I C-programmering är det också möjligt att skicka adresser som argument till funktioner.

För att acceptera dessa adresser i funktionsdefinitionen kan vi använda pekare. Det beror på att pekare används för att lagra adresser. Låt oss ta ett exempel:

Exempel: Skicka adresser till funktioner

 #include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )

När du kör programmet blir resultatet:

 num1 = 10 num2 = 5

Adressen för num1 och num2 skickas till swap()funktionen med swap(&num1, &num2);.

Pekare n1 och n2 accepterar dessa argument i funktionsdefinitionen.

 void swap(int* n1, int* n2) (… ) 

När * n1 och * n2 ändras inuti swap()funktionen ändras num1 och num2 inuti huvudfunktionen ().

Inuti swap()funktionen *n1och *n2bytte. Därför byts också num1 och num2.

Observera att det swap()inte returnerar någonting; dess returtyp är void.

Exempel 2: Skicka pekare till funktioner

 #include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )

Här är värdet som lagras vid p *p,, initialt 10.

Vi skickade sedan pekaren p till addOne()funktionen. Ptr-pekaren får den här adressen i addOne()funktionen.

Inuti funktionen ökade vi värdet som lagrades vid ptr med 1 med (*ptr)++;. Eftersom ptr- och p-pekare båda har samma adress är *pinsidan main()också 11.

Intressanta artiklar...