Δημοσιεύτηκε: 03 Ιούλ 2011, 03:17
από Star_Light
Α οκ καταλαβα τον διπλο δεικτη... αλλα ηθελα να πω πως

στο αλλο τουτοριαλ ειχαμε αυτο εδω το παραδειγμα

Κώδικας: Επιλογή όλων


1.#include<stdio.h>
2.void foo(int n)
3.{
4.n=1000;
5.printf("μεσα στην foo():%d\n",n);
6.return;
7.}
8.int main(void)
9.{
10.int n;
11.n=30;
12.printf("πριν την foo(n):%d",n);
13.foo(n);
14.printf("μετα την foo(n):%d\n",n);
15.getchar();
16.return 0:
17.}


και αυτο εδινε εξοδο 30 1000 30

αν αλλαξουμε πχ και βαλουμε

Κώδικας: Επιλογή όλων


2.void foo (int *n)
4.*n=1000;

και μετα *n μεσα στις printf



θα δωσει 30 1000 1000



και ειχαμε πει πως η αλλαγη δεν διατηρηθηκε οταν τερματισε η συναρτηση επειδη μεσα στην συναρτηση περαστηκε ενα αντιγραφο. Και αυτο μπορεις να το αλλαξεις με την χρηση των δεικτων δηλαδη ας πουμε τωρα σαν να το αναιρεις.... εκει μπερδευομαι...

"Κάνοντας ξανά compile το πρόγραμμα και τρέχοντάς το θα δείτε πως πλέον η αλλαγή της μεταβλητής n μέσα στη συνάρτηση foo() διατηρείται και μετά τον τερματισμό της συνάρτησης. Αυτό ονομάζεται "pass by reference". Το πρόγραμμα θα τυπώσει τις παρακάτω γραμμές στην οθόνη σας:"

το λες ξεκαθαρα δηλαδη..... και εχω σκαλωσει :S