Article View: pl.comp.lang.c
Article #308775Re: Pytanko dotyczące C/C++
From: Mateusz Viste
Date: Thu, 04 Aug 2016 09:30
Date: Thu, 04 Aug 2016 09:30
56 lines
2665 bytes
2665 bytes
On 04/08/2016 09:58, stchebel@gmail.com wrote:
> 1) void Jakaś_Tam_Funkcja(int* Jakaś_Tam_Zmienna);
> 2) void Jakaś_Tam_Funkcja(int *Jakaś_Tam_Zmienna);
> 3) void Jakaś_Tam_Funkcja(int * Jakaś_Tam_Zmienna);
>
> Nie chodzi mi o "void". Chodzi mi o umiejscowienie gwiazdek. Aha!! I jak następnie prawidłowo wywoływać tą funkcję z pewną zmienną o zadanej wartości.
Na pierwsze dwa pytania już odpowiedziałem na pierwotne zapytanie na
pl.misc.elektronika, dodam tylko komentarz do:
> Jakaś_Tam_Zmienna może być dowolnego typu. Całkowita, rzeczywista,
> zespolona, bitmapa, cokolwiek..
Jak już Tomasz zauważył, to bardzo zła praktyka. Jeśli jednak naprawdę
nie ma innego wyjścia, to można ew. kombinować tak, licząc się z tym że
prędzej czy póżniej to się zemści:
#include <stdio.h>
void f(void *x) {
short *xshort;
long *xlong;
char *xstring;
xshort = x;
xlong = x;
xstring = x;
printf("short : %d\n", *xshort);
printf("long : %ld\n", *xlong);
printf("string: '%s'\n", xstring);
}
int main(void) {
long x;
x = 999999;
f(&x);
return(0);
}
Uruchomienie:
mateusz@mateusz:~> ./test
short : 16959
long : 999999
string: '?B'
Tłumaczenie: "void *" oznacza "wskaźnik jakiegokolwiek typu". C
potrzebuje znać typ, a typem jest tu wskaźnik, więc wszystko gra. A w co
ten wskaźnik kieruje to już można sobie potem interpretować na wszelaki
sposób.
Ja sam nigdy nie użyłbym takiej konstrukcji, powyższe podaję raczej jako
ciekawostkę. Prawidłowa odpowiedź to "należy deklarować typy zgodnie z
ich przeznaczeniem".
Mateusz
Technical Details
Message-ID:
<57a30b27$0$3327$426a74cc@news.free.fr>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.mixmin.net!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!cleanfeed4-a.proxad.net!nnrp4-1.free.fr!not-for-mailReferences:
<4069150b-d97c-4c69-ac7e-b46f61454c32@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.mixmin.net!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!cleanfeed4-a.proxad.net!nnrp4-1.free.fr!not-for-mail Subject: Re: Pytanko dotyczące C/C++ Newsgroups: pl.comp.lang.c References: <4069150b-d97c-4c69-ac7e-b46f61454c32@googlegroups.com> From: Mateusz Viste <mateusz.viste@localhost> Date: Thu, 4 Aug 2016 11:30:31 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2 MIME-Version: 1.0 In-Reply-To: <4069150b-d97c-4c69-ac7e-b46f61454c32@googlegroups.com> Lines: 57 Message-ID: <57a30b27$0$3327$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 04 Aug 2016 11:30:17 CEST NNTP-Posting-Host: 130.255.21.141 X-Trace: 1470303017 news-3.free.fr 3327 130.255.21.141:56774 X-Complaints-To: abuse@proxad.net Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit