«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.

13
Malloc () ve free () nasıl çalışır?
Ben nasıl bilmek istiyorum mallocve freeçalışması. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Cevabın hafıza düzeyinde derinlemesine olması mümkünse …


18
Anahtar kelime "kayıt" C?
registerAnahtar kelime C dilinde ne yapar ? Optimizasyon için kullanıldığını ancak herhangi bir standartta açıkça tanımlanmadığını okudum. Hâlâ alakalı mı ve öyleyse ne zaman kullanırsınız?
273 c  memory  keyword 

4
Paylaşılan nesneler (.so), statik kitaplıklar (.a) ve DLL'ler (.so) arasındaki fark nedir?
Linux'taki kütüphanelerle ilgili bazı tartışmalara katıldım ve bazı şeyleri doğrulamak istiyorum. Anladığım kadarıyla (eğer yanlışsam lütfen düzeltin ve daha sonra yazımı düzenleyeceğim), bir uygulama oluştururken kütüphaneleri kullanmanın iki yolu vardır: Statik kitaplıklar (.a dosyaları): Bağlantı zamanında, kitaplığın içindeki işlevlerin her zaman çağıran uygulama tarafından kullanılabilmesi için tüm kitaplığın bir kopyası …
273 c++  c  linux  dll  linker 

13
C'de numaralandırılmış tip (enum) nasıl tanımlanır?
C numaralarını kullanmak için uygun sözdiziminin ne olduğundan emin değilim. Takip koduna sahibim: enum {RANDOM, IMMEDIATE, SEARCH} strategy; strategy = IMMEDIATE; Ancak bu, aşağıdaki hata ile derlenmez: error: conflicting types for ‘strategy’ error: previous declaration of ‘strategy’ was here Neyi yanlış yapıyorum?
272 c  enums 



23
Bir programın çalıştığı dizini nasıl edinebilirim?
C / C ++ kullanarak bir programın çalıştığı dizinin tam yolunu elde etmek için platform-agnostik ve dosya sistemi-agnostik bir yöntem var mı? Geçerli çalışma dizini ile karıştırılmamalıdır. (Lütfen clib veya STL gibi standart olanlar olmadıkça kütüphaneleri önermeyin.) (Platform / dosya sistemi-agnostik yöntemi yoksa, belirli dosya sistemleri için Windows ve Linux'ta …
269 c++  c  working-directory 

30
“İf” zincirlerinden nasıl kaçınılır?
Bu sözde kod var varsayarsak: bool conditionA = executeStepA(); if (conditionA){ bool conditionB = executeStepB(); if (conditionB){ bool conditionC = executeStepC(); if (conditionC){ ... } } } executeThisFunctionInAnyCase(); İşlevler executeStepX, yalnızca bir önceki başarılı olursa çalıştırılmalıdır. Her durumda, executeThisFunctionInAnyCasefonksiyon sonunda çağrılmalıdır. Programlama konusunda bir acemi değilim, çok basit bir soru …

8
Bir dosyayı açmak aslında ne yapar?
Tüm programlama dillerinde (en azından kullandığım), okuyabilmeniz veya yazabilmeniz için bir dosyayı açmanız gerekir. Peki bu açık operasyon aslında ne yapıyor? Tipik işlevler için manuel sayfalar size aslında 'okuma / yazma için bir dosya açar' dışında bir şey söylemez: http://www.cplusplus.com/reference/cstdio/fopen/ https://docs.python.org/3/library/functions.html#open Açıkçası, fonksiyonun kullanımı yoluyla, bir dosyaya erişmeyi kolaylaştıran bir …
266 c  linux 

11
Bool yerel bir C tipi midir?
Linux çekirdek kodunun bool kullandığını fark ettim, ama bool'ün bir C ++ tipi olduğunu düşündüm. Bool standart bir C uzantısı mı (örn. ISO C90) veya bir GCC uzantısı mı?
265 c  gcc  linux-kernel  boolean 

3
C'deki ok (->) operatörü neden var?
Dot ( .) operatörü bir yapının ->bir üyesine erişmek için kullanılırken C'deki ok operatörü ( ), söz konusu imleç tarafından başvurulan bir yapının bir üyesine erişmek için kullanılır. İşaretçinin kendisinde nokta operatörü ile erişilebilen herhangi bir üye yoktur (aslında sanal bellekteki bir konumu tanımlayan bir sayıdır, bu nedenle herhangi bir …
264 c  pointers  dereference 

14
C dilinde bir dizeyi nasıl oluştururum?
C dizeleri bir dizi oluşturmaya çalışıyorum. Bu kodu kullanırsanız: char (*a[2])[14]; a[0]="blah"; a[1]="hmm"; gcc bana "uyarı: uyumsuz işaretçi türünden atama" veriyor. Bunu yapmanın doğru yolu nedir? edit: Eğer bunu yaparsam printf(a[1]);, doğru "hmm" yazdırır çünkü bu neden bir derleyici uyarı vermek merak ediyorum .
263 c  arrays  string 

10
C / C ++ 'da bir tamsayı bölümünün hızlı tavanı
Verilen tamsayı değerleri xve yC ve C ++ her ikisi q = x/yde kayan nokta eşdeğerinin zemini olarak geri döner . Bunun yerine tavanı döndürme yöntemiyle ilgileniyorum. Örneğin, ceil(10/5)=2veceil(11/5)=3 . Açık yaklaşım şöyle bir şey içerir: q = x / y; if (q * y < x) ++q; Bu ekstra …
262 c++  c  algorithm  math 


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.