Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Σεπ 2011, 22:31

λοιπον εφτιαξα μια void συναρτηση η οποια ελεγχει αν ενας δεικτης NULL Υπαρχει ή οχι....
βεβαια δεν ξερω που μπορει να χρησιμευσει αυτη... αλλα παραθετω τον κωδικα της

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

#include<stdio.h>
#define SUCCESS 1
#define FAIL -1

int pseudo_func(void);

int main(void)
{

printf("%d",pseudo_func());

return 0;
}
int pseudo_func(void)
{
int *p;
p=NULL;

if(!p)
return SUCCESS;
else
return FAIL;
}
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Σεπ 2011, 22:35

έγραψε:Λοιπον αν θυμαμαι καλα ο δεικτης ηταν *table?

επομενως στην αρχη της συναρτησης εγω θα εβαζα αυτο
...


Ακριβώς! :)

Μόνο που σκέτο return γράφεις σε όσες συναρτήσεις είναι δηλωμένες void, στις άλλες πρέπει να αποφασίσεις εσύ (ο προγραμματιστής) τι θέλεις να σου επιστρέφει ως τιμή επιστροφής η συνάρτηση σε αυτή την περίπτωση. Π.χ. στη συνάρτηση int tablen( int *table ) πρέπει να βάλεις το return να επιστρέφει μια ακέραια τιμή.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Σεπ 2011, 22:39

Star_Light έγραψε:λοιπον εφτιαξα μια void συναρτηση η οποια ελεγχει αν ενας δεικτης NULL Υπαρχει ή οχι....
βεβαια δεν ξερω που μπορει να χρησιμευσει αυτη... αλλα παραθετω τον κωδικα της

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

#include<stdio.h>
#define SUCCESS 1
#define FAIL -1

int pseudo_func(void);

int main(void)
{

printf("%d",pseudo_func());

return 0;
}
int pseudo_func(void)
{
int *p;
p=NULL;

if(!p)
return SUCCESS;
else
return FAIL;
}

Άλλα αντί άλλων είναι αυτή :lol:

Καταρχήν από τη στιγμή που μέσα στη συνάρτηση βάζεις το p = NULL, το !p ισούται με TRUE άρα η συνάρτηση επιστρέφει πάντα SUCCESS. Έπειτα, το p πρέπει να περνιέται ως όρισμα στη συνάρτηση :lol:
Τελευταία επεξεργασία από migf1 και 10 Σεπ 2011, 22:40, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Σεπ 2011, 22:40

migf1 έγραψε:
έγραψε:Λοιπον αν θυμαμαι καλα ο δεικτης ηταν *table?

επομενως στην αρχη της συναρτησης εγω θα εβαζα αυτο
...


Ακριβώς! :)

Μόνο που σκέτο return γράφεις σε όσες συναρτήσεις είναι δηλωμένες void, στις άλλες πρέπει να αποφασίσεις εσύ (ο προγραμματιστής) τι θέλεις να σου επιστρέφει ως τιμή επιστροφής η συνάρτηση σε αυτή την περίπτωση. Π.χ. στη συνάρτηση int tablen( int *table ) πρέπει να βάλεις το return να επιστρέφει μια ακέραια τιμή.


ε ωραια... οπως πιο πανω μπορω να ορισω μια τιμη μεσω define.... px για SUCCESS ή FAIL.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Σεπ 2011, 22:42

Star_Light έγραψε:
ε ωραια... οπως πιο πανω μπορω να ορισω μια τιμη μεσω define.... px για SUCCESS ή FAIL.

Τσου!

Η τιμή που σου επιστρέφει η συνάρτηση στο λάθος πρέπει να συνάδει ως λογική με την τιμή που σου επιστρέφει και στο σωστό.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Σεπ 2011, 22:47

migf1 έγραψε:
Άλλα αντί άλλων είναι αυτή :lol:

Καταρχήν από τη στιγμή που μέσα στη συνάρτηση βάζεις το p = NULL η συνάρτηση επιστρέφει πάντα SUCCESS. Έπειτα, το p πρέπει να περνιέται ως όρισμα στη συνάρτηση :lol:


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

#include<stdio.h>
#define SUCCESS 1
#define FAIL -1

int pseudo_func(int *p);


int main(void)
{

int *p=NULL;

printf("%d",pseudo_func(p));

return 0;
}
int pseudo_func(int *p)
{

if(!p)
return SUCCESS;
else
return FAIL;

}


κοιταξε εδω σκεφτομαι το εξης.... αν ο δεικτης δεν δειχνει καπου επεστρεψε success δηλαδη if(!0) <=> 1 αρα μπαινει στο 1ο...
αμα αλλαξω και βαλω if(p) οντως μου δινει -1 δηλαδη FAIL επειδη ο δεικτης δεν υπαρχει... αλλο αν ειναι εγκυρος οπως εχουμε πει. Ναι ή οχι ?
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Σεπ 2011, 22:51

απο την στιγμη που το εχω ορισει το p σαν NULL Το if μεσα ειναι παντα 1... καλα δεν ειναι λειτουργικη η συναρτηση προφανως για μια δοκιμη την εφτιαξα :P
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Σεπ 2011, 22:52

Όχι!

Ο μόνος έλεγχος που μπορείς να κάνεις είναι με NULL (αν δείχνει δηλαδή κάπου ή όχι). Αν δείχνει κάπου (δεν είναι NULL δηλαδή) δεν μπορείς να ελέγξεις αν αυτό στο οποίο δείχνει υπάρχει ή όχι.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Σεπ 2011, 22:58

migf1 έγραψε:Όχι!

Ο μόνος έλεγχος που μπορείς να κάνεις είναι με NULL (αν δείχνει δηλαδή κάπου ή όχι). Αν δείχνει κάπου (δεν είναι NULL δηλαδή) δεν μπορείς να ελέγξεις αν αυτό στο οποίο δείχνει υπάρχει ή όχι.


AAAAA.... καταλαβα... οποτε θελω αυτο

Κώδικας: Επιλογή όλων
if(p==NULL) // or if(p!=NULL)
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Σεπ 2011, 23:02

Yeap :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι