«c» etiketlenmiş sorular

C, sistem programlama (OS ve gömülü), kütüphaneler, oyunlar ve çapraz platform için kullanılan genel amaçlı bir programlama dilidir. Bu etiket, ISO 9899 standardında tanımlandığı gibi C dili ile ilgili genel sorularla kullanılmalıdır (aksi belirtilmedikçe en son sürüm 9899: 2018 - c89, c99, c11 vb. İle sürüme özgü istekleri de etiketleyin). C, C ++ 'dan farklıdır ve rasyonel bir nedenden yoksun C ++ etiketi ile birleştirilmemelidir.

7
İşaretçi karşılaştırması C'de nasıl çalışır? Aynı diziye işaret etmeyen işaretçileri karşılaştırmak uygun mudur?
K&R (C Programlama Dili 2. Baskı) bölüm 5'de aşağıdakileri okudum: İlk olarak, işaretçiler belirli koşullar altında karşılaştırılabilir. Eğer pve qardından ilişkiler gibi nokta aynı dizinin üyelerine ==, !=, <, >=düzgün, vb işleri. Bu da sadece aynı diziyi gösteren işaretçilerin karşılaştırılabileceği anlamına geliyor. Ancak bu kodu denediğimde char t = 't'; …

4
Çatal çağrılırken iplikler kopyalanıyor mu?
İş parçacıklarıyla çalışan bir programım varsa ve fork()unix tabanlı bir sistemden çağrı yapıyorsam iş parçacıkları kopyalanıyor mu? Mevcut işlemin sanal belleğinin 1: 1 kopyasının ortaya çıkardığı yeni işleme kopyalandığını biliyorum. Bir işlemin sanal belleğinde iş parçacığı kendi yığını olduğunu biliyorum. Bu nedenle, en azından iplik yığını da kopyalanmalıdır. Ancak, sanal …

6
2 baytı işaretli bir 16 bit tam sayıya dönüştürmenin doğru yolu nedir?
Gelen bu cevap , Zwol bu iddiayı yaptı: İki bayt veriyi harici bir kaynaktan 16 bit işaretli tam sayıya dönüştürmenin doğru yolu aşağıdaki gibi yardımcı işlevlerdir: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | (((uint32_t)data[1]) << 0); return ((int32_t) val) - 0x10000u; } …

1
Yazma neden arabellekte sürekli 4K bayt bırakıyor?
Temelde aşağıdaki kod var: int fileWrite(int file, void * pBuffer, size_t size) { size_t bytesWritten = (size_t)write( file, pBuffer, size ) ; if (bytesWritten != size) { return -1; } return 0; } Boyut 1GB ise çalışır, ancak boyut ~ 2GB olduğunda, 4K bayt sürekli olarak kalır. Bunu bir döngüde …
30 c  linux  system-calls 

4
C ve C ++ 'da denilen (…) nedir?
Bunun kullanımlarından biri ..., C ve C ++ 'daki varyasyon varlıklarını belirtmektir . Onun adı ne? Bu şekilde kullanıldığında operatör veya başka bir şey olarak sınıflandırılıyor mu? İlgili başka ayrıntılar var ...mı? Düzenleme: Amacını biliyorum .... Hem C hem de C ++ 'da benzer olduğunu umuyorum, adını ve sınıflandırmasını soruyorum.

2
C'nin BNF dilbilgisi neden boş bir init-declarator dizisi içeren bildirimlere izin veriyor?
C'nin BNF gramerine bakarken, bir deklarasyon için üretim kuralının böyle görünmesinin garip olduğunu düşündüm ( https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of% uyarınca 20C% 20in% 20Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; Neden bir *nicelik belirteci (sıfır veya daha fazla tekrarlama anlamına gelir) init-declarator? Bu, anlamsal olarak geçersiz olmalarına rağmen int;veya gibi ifadelerin void;sözdizimsel olarak …


4
Void * function () işlev için bir işaretçi mi yoksa void * döndüren bir işlev mi?
Anlamı hakkında kafam karıştı void *function(). Bir işaretçi void*mi, yoksa dönen bir fonksiyon mu? Ben her zaman bir işaretçi dönen özyinelemeli bir işlev olarak veri yapıları üzerinde kullandım, ama ben multithreading ( pthread) bir kod gördüğümde aynı işlev bildirimi vardır. Şimdi aralarındaki farkın ne olduğunu karıştırıyorum.

3
C'nin C ++ 'dan std :: less karşılığı var mı?
Kısa süre önce ve p < qne zaman farklı nesneler / diziler işaretçiler C yapmak tanımsız davranışı hakkında bir soru cevap . Bu beni düşündürdü: C ++ bu durumda aynı (tanımsız) davranışa sahiptir , ancak aynı zamanda işaretçilerin karşılaştırılabildiği zaman aynı şeyi döndürmesi ve yapamadıkları zaman tutarlı bir sıralama döndürmesi …

1
C ile çakışan nesnelerin semantiği nedir?
Aşağıdaki yapıyı düşünün: struct s { int a, b; }; Tipik olarak 1 , bu yapı 8 ebatına ve 4 hizalamasına sahip olacaktır. Ya iki struct snesne yaratırsak (daha kesin olarak, tahsis edilen depoya bu tür iki nesneyi yazarız), ikinci nesne birinciyle çakışırsa? char *storage = malloc(3 * sizeof(struct s)); …

5
Bitsel işlem beklenmedik değişken boyutuna neden olur
bağlam Başlangıçta PIC mikrodenetleyici için 8 bit C derleyicisi kullanılarak derlenen C kodunu taşıyoruz. İmzasız global değişkenlerin (örneğin, hata sayaçları) sıfıra geri dönmesini önlemek için kullanılan yaygın bir deyim şudur: if(~counter) counter++; Bitsel operatör burada tüm bitleri tersine çevirir ve ifade sadece countermaksimum değerden azsa doğrudur . Daha da önemlisi, …


1
gcc-10.0.1 Özel Segfault
Ben oldukça uzun bir süre nispeten kararlı ve çok çeşitli platformlar ve derleyiciler (windows / osx / debian / fedora gcc / clang) karşı test edilir C derlenmiş kod ile bir R paketi var . Son zamanlarda paketi tekrar test etmek için yeni bir platform eklendi: Logs from checks with …


9
'\ 0' ve C de printf ()
C'nin giriş dersinde, dizeleri saklarken \0sonunda boş karakterle saklandığını öğrendim . Ama bir dize yazdırmak printf("hello")istersem \0, aşağıdaki ifadeyle bitmediğini fark etsem de printf("%d", printf("hello")); Output: 5 ama bu tutarsız gibi görünüyor, kadarıyla dizeleri gibi değişken ana bellekte saklanır biliyorum ve sanırım bir şey yazdırırken de ana bellekte saklanabilir, o …
21 c  printf  stdout  c-strings 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.