หน้าแรก
หน้าแรก
ใน C ++ การประกาศไปข้างหน้าช่วยให้รหัสหลังการประกาศทราบว่ามีคลาสที่มีชื่อบุคคล สิ่งนี้ทำให้คอมไพเลอร์พึงพอใจเมื่อเห็นชื่อเหล่านี้ใช้ ต่อมาลิงเกอร์จะพบคำจำกัดความของคลาส โค้ดตัวอย่าง Class Person; void myFunc(Person p1) { // ... } Class Person { // Class definition here }; ดังนั้นในกรณีนี้เมื่
ในโพสต์นี้ คุณสามารถดูรายละเอียดบางส่วนซึ่งคุณสามารถซื้อและดูฉบับร่างฟรีของมาตรฐาน C/C++ ในปัจจุบันและในอดีตได้ เอกสาร C C11: 198 CHF (https://www.iso.org/standard/57853.html) เผยแพร่ต่อสาธารณะที่ (https://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf) ลิงก์ Wikipedia (https://en.w
ในส่วนนี้ เราจะมาดูวิธีการแปลงตัวเลข (จำนวนเต็มหรือทศนิยมหรือข้อมูลประเภทตัวเลขอื่นๆ) เป็นสตริง ตรรกะนั้นง่ายมาก เราจะใช้ฟังก์ชัน sprintf() ฟังก์ชันนี้ใช้เพื่อพิมพ์ค่าหรือบรรทัดบางอย่างลงในสตริง แต่ไม่ใช่ในคอนโซล นี่เป็นข้อแตกต่างระหว่าง printf() และ sprintf() ที่นี่อาร์กิวเมนต์แรกคือบัฟเฟอร์สตริง
ในส่วนนี้เราจะมาดูวิธีการคัดลอกสตริงไปยังสตริงอื่นโดยไม่ต้องใช้ฟังก์ชัน strcpy() เพื่อแก้ปัญหานี้ เราสามารถเขียนฟังก์ชันของเราเองที่สามารถทำหน้าที่เหมือน strcpy() แต่ในที่นี้ เราจะปฏิบัติตามเคล็ดลับบางประการ เราจะใช้ฟังก์ชันไลบรารีอื่นเพื่อคัดลอกสตริงไปที่อื่น ตรรกะนั้นง่ายมาก เราจะใช้ฟังก์ชัน spri
นี่เป็นอีกปัญหาหนึ่งที่ยุ่งยาก ในโปรแกรมนี้ เราจะมาดูวิธีการพิมพ์สตริงโดยใช้ภาษา C โดยที่ไม่ใส่เครื่องหมายอัญประกาศ ที่นี่เราใช้ฟังก์ชันมาโคร เรากำลังกำหนดฟังก์ชันมาโครเช่น #define getString(x) #x getString() เป็นฟังก์ชันมาโคร คืนค่า x โดยแปลงเป็นสตริง # ก่อน x แสดงว่าฟังก์ชันจะแปลง x เป็นสตริง In
ในโปรแกรมนี้ เราจะมาดูกันว่ามาโครถูกใช้เพื่อเชื่อมสตริงสองสตริงอย่างไร เราสามารถสร้างสตริงสองรายการขึ้นไปในมาโครได้ จากนั้นจึงเขียนทีละรายการเพื่อแปลงเป็นสตริงที่ต่อกัน ไวยากรณ์เป็นเหมือนด้านล่าง: #define STR1 "str1" #define STR2 " str2" #define STR3 STR1 STR2 //it will concatena
ในส่วนนี้ เราจะมาดูวิธีการแปลงตัวเลข (จำนวนเต็มหรือทศนิยมหรือข้อมูลประเภทตัวเลขอื่นๆ) เป็นสตริง ตรรกะนั้นง่ายมาก เราจะใช้ฟังก์ชัน sprintf() ฟังก์ชันนี้ใช้เพื่อพิมพ์ค่าหรือบรรทัดบางอย่างลงในสตริง แต่ไม่ใช่ในคอนโซล นี่เป็นข้อแตกต่างระหว่าง printf() และ sprintf() ที่นี่อาร์กิวเมนต์แรกคือบัฟเฟอร์สตริง
ในส่วนนี้เราจะมาดูวิธีการกลับสตริงในตำแหน่ง ดังนั้นเราจะไม่ใช้พื้นที่หน่วยความจำอื่นในการย้อนกลับ ใน C++ เราสามารถใช้ std::string แต่สำหรับ C เราต้องใช้อาร์เรย์อักขระ ในโปรแกรมนี้เราใช้อาร์เรย์อักขระเพื่อรับสตริง แล้วย้อนกลับ อินพุต:สตริง นี่คือสตริง เอาต์พุต:สตริงที่กลับด้าน gnirts a si sihT อัลกอร
วิธีเดียวที่ปลอดภัยคือการตรวจสอบการล้นก่อนที่จะเกิดขึ้น มีวิธีแฮ็กในการตรวจสอบจำนวนเต็มล้นแม้ว่า ดังนั้น หากคุณกำลังตั้งเป้าที่จะตรวจจับโอเวอร์โฟลว์ในส่วนเสริมที่ไม่ได้ลงนาม คุณสามารถตรวจสอบว่าผลลัพธ์นั้นน้อยกว่าค่าที่เพิ่มไว้หรือไม่ ตัวอย่างเช่น โค้ดตัวอย่าง unsigned int x, y; unsigned int value =
ข้อผิดพลาดในการแบ่งส่วนเกิดขึ้นเมื่อโปรแกรมของคุณพยายามเข้าถึงพื้นที่หน่วยความจำที่ไม่ได้รับอนุญาตให้เข้าถึง กล่าวคือ เมื่อโปรแกรมของคุณพยายามเข้าถึงหน่วยความจำที่เกินขีดจำกัดที่ระบบปฏิบัติการจัดสรรให้กับโปรแกรมของคุณ ความผิดพลาดในการแบ่งส่วนส่วนใหญ่เกิดจากตัวชี้ที่: ใช้เพื่อเริ่มต้นอย่างถูกต้อง
นี่คือโปรแกรม C++ ที่ส่งคืนอาร์เรย์ในเครื่องจากฟังก์ชัน อัลกอริทึม Begin We can use dynamically allocated array to return a local array from function Array(). Print the elements of the array. End โค้ดตัวอย่าง #include <iostream> using namespace std; int* Array() { int* a = new int[100
ในอาร์เรย์หลายมิติ อาร์เรย์ควรมีมิติมากกว่า 1 ไดอะแกรมต่อไปนี้แสดงกลยุทธ์การจัดสรรหน่วยความจำสำหรับอาร์เรย์หลายมิติที่มีขนาด 3 x 3 x 3 นี่คือโปรแกรม C++ เพื่อเริ่มต้นอาร์เรย์หลายมิติ อัลกอริทึม Begin Initialize the elements of a multidimensional array. Print the size of
ใน C/C++ อาร์เรย์หลายมิติถูกกำหนดด้วยคำง่ายๆ ว่าเป็นอาร์เรย์ของอาร์เรย์ ในอาร์เรย์หลายมิติข้อมูลจะถูกจัดเก็บในรูปแบบตาราง (ในลำดับหลักแถว) ไดอะแกรมต่อไปนี้แสดงกลยุทธ์การจัดสรรหน่วยความจำสำหรับอาร์เรย์หลายมิติที่มีขนาด 3 x 3 x 3 อัลกอริทึม Begin Declare dimension of the array. &
ในโปรแกรมนี้ เราจะหา Find size of array ใน C/C++ โดยไม่ต้องใช้ sizeof อัลกอริทึม Begin Initialize the elements of the array. &a => This is the pointer to array which points at the same memory address as a. &a + 1 => It points at the address after the end of the array. *(a+1
สมาชิก Array ที่ยืดหยุ่นในโครงสร้างในภาษา C หมายความว่าเราสามารถประกาศอาร์เรย์โดยไม่มีมิติภายในโครงสร้าง และขนาดของอาร์เรย์จะมีความยืดหยุ่นตามธรรมชาติ สมาชิกอาร์เรย์ที่ยืดหยุ่นต้องเป็นสมาชิกคนสุดท้ายของคลาส นี่คือตัวอย่าง: ตัวอย่าง #include #include #include //structure of type employee and must co
หากมีค่าซ้ำใน C เราจะใช้สัญกรณ์อาร์เรย์ชวเลขเพื่อกำหนดอาร์เรย์นั้น นี่คือตัวอย่าง: โค้ดตัวอย่าง #include <stdio.h> int main() { int array[10] = {[0 ... 3]7, [4 ... 5]6,[6 ... 9]2}; for (int i = 0; i < 10; i++) printf("%d ", array[i]); return 0; } ผลลัพธ์ 7 7 7 7 6
C ถือว่าพารามิเตอร์อาร์เรย์เป็นตัวชี้ เนื่องจากใช้เวลาน้อยลงและมีประสิทธิภาพมากกว่า แม้ว่าเราสามารถส่งที่อยู่ของแต่ละองค์ประกอบของอาร์เรย์ไปยังฟังก์ชันเป็นอาร์กิวเมนต์ได้ แต่จะใช้เวลานานกว่า ดังนั้นจึงควรส่งต่อที่อยู่พื้นฐานขององค์ประกอบแรกไปยังฟังก์ชันเช่น: void fun(int a[]) { … } void fun(i
นี่เป็นโปรแกรม C++ อย่างง่ายของการแสดงองค์ประกอบอาร์เรย์ที่ผิดปกติ #include<iostream> using namespace std; int main() { int array[5] = {7,7,7, 6, 6}; for (int i = 0; i < 5; i++) cout<<*(array+i); return 0; } ผลลัพธ์ 7 7 7 6 6
พอยน์เตอร์และอาร์เรย์โดยส่วนใหญ่ถือว่าเหมือนกันในค ความแตกต่างบางประการได้แก่: &ตัวดำเนินการ: &pointer =ส่งกลับที่อยู่ของตัวชี้ &array =ส่งกลับที่อยู่ขององค์ประกอบแรก ตัวดำเนินการขนาด: sizeof(array) =ส่งคืนหน่วยความจำทั้งหมดที่ใช้โดยองค์ประกอบทั้งหมดของอาร์เรย์ sizeof(pointer) =คืนค่าห
เมื่อดัชนี Array เริ่มต้นด้วย 0 ดังนั้น a[i] จึงสามารถนำมาใช้เป็น *(a + i) หากดัชนีอาร์เรย์เริ่มต้นด้วย 1 แล้ว a[i] จะถูกนำไปใช้เป็น *(a+i-1) ซึ่งจะใช้เวลานานในระหว่างการคอมไพล์และประสิทธิภาพของโปรแกรมจะได้รับผลกระทบด้วย ดังนั้นจึงควรเริ่มต้นดัชนีของอาร์เรย์จาก 0 มีโปรแกรมอาร์เรย์อย่างง่าย - โค้ดต