Pertanyaan yang diberi tag «c»

C adalah bahasa pemrograman tujuan umum yang digunakan untuk pemrograman sistem (OS dan tertanam), perpustakaan, game, dan lintas-platform. Tag ini harus digunakan dengan pertanyaan umum tentang bahasa C, sebagaimana didefinisikan dalam standar ISO 9899 (versi terbaru, 9899: 2018, kecuali ditentukan lain - juga tag permintaan versi khusus dengan c89, c99, c11, dll). C berbeda dari C ++ dan tidak boleh digabungkan dengan tag C ++ tanpa alasan yang rasional.

3
Threadsafe vs peserta kembali
Baru-baru ini, saya mengajukan pertanyaan, dengan judul "Apakah malloc thread aman?" , dan di dalamnya saya bertanya, "Apakah malloc re-entrant?" Saya mendapat kesan bahwa semua peserta kembali aman dari benang. Apakah anggapan ini salah?

7
Mentransmisikan penunjuk fungsi ke tipe lain
Katakanlah saya memiliki sebuah fungsi yang menerima sebuah void (*)(void*)function pointer untuk digunakan sebagai callback: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Sekarang, jika saya memiliki fungsi seperti ini: void my_callback_function(struct my_struct* arg); Bisakah saya melakukan ini dengan aman? do_stuff((void (*)(void*)) &my_callback_function, NULL); Saya telah melihat pertanyaan ini dan saya telah melihat …


2
Apa itu vdso dan vsyscall?
aku melakukannya sudo cat /proc/1/maps -vv Saya mencoba memahami hasilnya. Saya dapat melihat banyak pustaka bersama yang dipetakan ke segmen pemetaan memori seperti yang diharapkan. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037b000-7f3c00383000 …
89 c  linux  linux-kernel  kernel  vdso 



12
Cetak teks sebagai ganti nilai dari C enum
int main() { enum Days{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; Days TheDay; int j = 0; printf("Please enter the day of the week (0 to 6)\n"); scanf("%d",&j); TheDay = Days(j); //how to PRINT THE VALUES stored in TheDay printf("%s",TheDay); // isnt working return 0; }
89 c  enums 


4
Mengapa rand () mengulang angka jauh lebih sering di Linux daripada Mac?
Saya menerapkan hashmap dalam C sebagai bagian dari proyek yang sedang saya kerjakan dan menggunakan sisipan acak untuk mengujinya ketika saya perhatikan bahwa rand()di Linux tampaknya mengulangi angka jauh lebih sering daripada di Mac. RAND_MAXadalah 2147483647 / 0x7FFFFFFF di kedua platform. Saya telah menguranginya menjadi program pengujian ini yang membuat …
88 c  linux  macos  random 

13
Bagaimana cara kerja program ini?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } Ini menampilkan 0!! Bagaimana mungkin? Apa alasannya? Saya sengaja meletakkan %ddalam printfpernyataan untuk mempelajari perilaku printf.
88 c++  c  memory  printf  endianness 

8
Cara yang efisien untuk mencari elemen
Baru-baru ini saya melakukan wawancara, di mana mereka menanyakan pertanyaan " pencarian ". Pertanyaannya adalah: Asumsikan ada sebuah array dari (positif) bilangan bulat, yang masing-masing elemen baik +1atau -1dibandingkan dengan elemen yang berdekatan. Contoh: array = [4,5,6,5,4,3,2,3,4,5,6,7,8]; Sekarang cari 7dan kembalikan posisinya. Saya memberikan jawaban ini: Simpan nilai dalam larik …

13
Apa aplikasi dari ## operator preprocessor dan gotcha yang perlu dipertimbangkan?
Seperti yang disebutkan dalam banyak pertanyaan saya sebelumnya, saya sedang mengerjakan K&R, dan saat ini sedang dalam preprocessor. Salah satu hal yang lebih menarik - sesuatu yang tidak pernah saya ketahui sebelumnya dari upaya saya sebelumnya untuk mempelajari C - adalah ##operator preprocessor. Menurut K&R: Operator preprocessor ## menyediakan cara …

4
Apakah variabel stack diselaraskan dengan GCC __attribute __ ((aligned (x)))?
Saya memiliki kode berikut: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } Dan saya memiliki output berikut: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Mengapa alamatnya a[0]bukan kelipatan 0x1000? Apa sebenarnya yang __attribute__((aligned(x)))dilakukannya? Saya salah paham dengan penjelasan ini …

17
Apakah C diketik dengan kuat?
Mengutip Wikipedia : Dua bahasa yang umum digunakan yang mendukung berbagai jenis konversi implisit adalah C dan C ++, dan terkadang diklaim bahwa ini adalah bahasa yang diketik lemah. Namun, yang lain berpendapat bahwa bahasa-bahasa ini memberikan batasan yang cukup tentang bagaimana operan dari jenis yang berbeda dapat dicampur, sehingga …

15
Apa tujuan dari fork ()?
Di banyak program dan halaman manual Linux, saya telah melihat penggunaan kode fork(). Mengapa kita perlu menggunakan fork()dan apa tujuannya?
88 c  unix  posix  fork 

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.