C Programlama diliyle şamatalar

Başlatan z, 23 Ekim 2011, 15:32:04

Mucit23


armsistem

#421
Arkadaşlar merhaba , aşağıdaki yapıyı tam olarak anlamadım.


Burada bir yapı tanımlanıyor ok !
typedef struct 
{
value....
} yapi1


Yeni yapi olarak coğaltıyorum .Burada da problem yok.
yapi1 yeniyapi1


aşağıda problem yok
unsigned char bfr[11];
fonksiyon(bfr,yeniyapi1);


yeniyapi1 tekrarmı coğaltıyoruz yeniyapi2 ?? anlamadım.
void fonksiyon (unsigned char * buf , yapi1 yeniyapi2)
{
event.....
}


Bu işin mantığı nedir.

yamak

Ne sorduğunuzu tam anlamadım. Biraz daha açar mısınız?yeniyapi1 tekrar mı çoğaltıyoruz ne demek?

revo09

fonksiyon(bfr,yeniyapi1);

Burda yaptığınız fonksiyonu çağırmak
void fonksiyon (unsigned char * buf , yapi1 yeniyapi2)
{
event.....
}

Bu ise çağırdığınız fonksiyonun implement edilmesi.   Burdaki "yeniyapi2" sadece argüman adi.
Çoğaltma ile kastteğiniz sanırım değişken oluşturma.

armsistem

Dostum kusura bakma kelimeleri yanlış seçmişim

<struct> <yap isimi> <nesne ismi>;


Anlamadığı tarafı ---->  yapi1 yeniyapi2 neden ?

void fonksiyon (unsigned char * buf , yapi1 yeniyapi2)
{
event.....
}

yamak

Orada yapılan tek şey fonksiyona yapi1 türünden bir parametre göndermek.
fonksiyon(bfr,yeniyapi1);
burada yapılan şey prototip tanımlama.Bir nevi derleyiciyi uyarıyosun. Aşağıda bir yerlerde böyle bi fonksiyon var diye.Eğer bunu yapmazsan fonksiyonu çağırdığın zaman linker hata verecektir.Böyle bi fonksiyon yok diye.Eğer prototip tanımlamak istemiyosan fonksiyonu main fonksiyonundan önce tanımlamalısın.

armsistem

typedef struct 
{
value....
} yapi1


yapi1 yeniyapi1



1. FONKSİYON
void fonksiyon (unsigned char * buf , yapi1 yeniyapi2)
{
event.....
}




2. FONKSİYON
void fonksiyon (unsigned char * buf ,  yeniyapi2)
{
event.....
}



1. fonksiyonla 2. fonksiyon arasında ne fark var.

revo09

#427
Alıntı yapılan: yamak - 01 Mart 2013, 19:14:01
Orada yapılan tek şey fonksiyona yapi1 türünden bir parametre göndermek.
fonksiyon(bfr,yeniyapi1);
burada yapılan şey prototip tanımlama.Bir nevi derleyiciyi uyarıyosun. Aşağıda bir yerlerde böyle bi fonksiyon var diye.Eğer bunu yapmazsan fonksiyonu çağırdığın zaman linker hata verecektir.Böyle bi fonksiyon yok diye.Eğer prototip tanımlamak istemiyosan fonksiyonu main fonksiyonundan önce tanımlamalısın.


Yanlış anlaşılma olmasın diye söylüyorum.
fonksiyon(bfr,yeniyapi1); fonksiyonun prototip tanımlaması değil. fonksiyon çağrısıdır.
prototipi void  fonksiyon(unsigned char *, yapi1)  şeklinde olur.
Ayrıca yine prototip tanımlaması derleyici içindir, linker için değil.
Eğer fonksiyonun prototip tanımlaması yapılır ancak implement edilmezse linker aşamsında hata verir.

@armsistem
Sanırım kafasını karıştıran neden ikinci bir yapi1 değişkeninin tanımlanması.
Onun sebebi ise kullanıcı bu fonksiyonu çağırdığında derleyici yeniyapi1 değişkeninin bir shallow  kopyasını oluşturur.
İşte bu kopya yeniyapi2 değişkenidir.  yani sen fonksiyonunun içinde yeniyapi1 nesnesinin kopyası üzerinde işlem yapmış olursun.
Bunun yerine yapi1 türünden pointer kullanman daha efektif olur.
Ayrıca değişken isimleri çok kötü onlarda kafanı karıştırabilir.



Sonradan eklediğin mesaj için:
1. fonksiyon unsigned char * ve yapi1 türünden 2 parametre alır
2. fonksiyon  derlenmez çünkü yeniyapi2 diye bir tür tanımı yok.

İlk verdiğin örnekteki yeniyapi2 bir tür değil değişkendir.
Dediğim gibi isimler çok kötü. aslında yeniyapi2 yapi1 türünden bir değişken.

yamak

Haklısınız ben yanlış gördüm.Onu bi an prototip tanımalası olarak.Evt o kısım fonksiyon çağrısı.

Mucit23

Arkadaşlar C de Negatif bir sayıyı pozitif bir sayıya nasıl çeviririm. Mesela sayı -100 olsun. Bir işlemden geçirdikten sonra bu sayıyı  Signed char olarak tanımlı bu değer. Yani +-127 alabilir.

muhittin_kaplan

#430
Bilmiyorum ama nedense br ses
şunu aramamı söylüyor

absolute value in ansi c

mesaj birleştirme:: 07 Mart 2013, 15:19:22

http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst68.htm

Mucit23

Hocam Sağolun Hallettim. Açıkçası mutlak değer hiç aklıma gelmedi.
Ben gidip 7. biti 0 yapmaya çalışıyorum..

muhittin_kaplan

#432
Matematik doğada varmıdır, yoksa bizmi matematik yaparız.
(Aman Fractal duymasın. :-X)

Espiri Yapmayada gelmiyor arkadaş.

speak48

hiç bi yerde göremediysen bari eline bak

armsistem

c ile ilgili bu bölümü geyik bölümüne çevirmesek.