Δημοσιεύτηκε: 03 Ιούλ 2011, 03:17
Α οκ καταλαβα τον διπλο δεικτη... αλλα ηθελα να πω πως
στο αλλο τουτοριαλ ειχαμε αυτο εδω το παραδειγμα
και αυτο εδινε εξοδο 30 1000 30
αν αλλαξουμε πχ και βαλουμε
θα δωσει 30 1000 1000
και ειχαμε πει πως η αλλαγη δεν διατηρηθηκε οταν τερματισε η συναρτηση επειδη μεσα στην συναρτηση περαστηκε ενα αντιγραφο. Και αυτο μπορεις να το αλλαξεις με την χρηση των δεικτων δηλαδη ας πουμε τωρα σαν να το αναιρεις.... εκει μπερδευομαι...
"Κάνοντας ξανά compile το πρόγραμμα και τρέχοντάς το θα δείτε πως πλέον η αλλαγή της μεταβλητής n μέσα στη συνάρτηση foo() διατηρείται και μετά τον τερματισμό της συνάρτησης. Αυτό ονομάζεται "pass by reference". Το πρόγραμμα θα τυπώσει τις παρακάτω γραμμές στην οθόνη σας:"
το λες ξεκαθαρα δηλαδη..... και εχω σκαλωσει :S
στο αλλο τουτοριαλ ειχαμε αυτο εδω το παραδειγμα
- Κώδικας: Επιλογή όλων
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