Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ปริศนาการเรียกฟังก์ชัน C/C++?


ปริศนาการเรียกใช้ฟังก์ชัน C/C++ นี้เป็นปริศนาที่มีจุดประสงค์เพื่อสำรวจเพิ่มเติมเกี่ยวกับพฤติกรรมของการเรียกใช้เมธอดทั้งในภาษาโปรแกรม C และ C++/

ผลลัพธ์ของวิธีการใน C และ C++ แตกต่างกัน มาดูกันว่าวิธีการเรียกในภาษา C และ C++ แตกต่างกันอย่างไร

มาดูตัวอย่างและตรวจสอบผลลัพธ์ของโค้ดด้านล่างใน c และ c++

ตัวอย่าง

void method() {
   // Print statement
}
int main() {
   method();
   method(2);
}

ผลลัพธ์

สำหรับ C++ -

Error : too many arguments to function ‘void method()’

สำหรับ C −

Program runs without any error.

ตรรกะเบื้องหลังผลลัพธ์และข้อผิดพลาด

คอมไพเลอร์สำหรับภาษาโปรแกรม C++ จะถือว่า function method() เป็นฟังก์ชันที่ไม่มีพารามิเตอร์ใด ๆ ในขณะที่ฟังก์ชันเดียวกันในคอมไพเลอร์ C ทำงานค่อนข้างมีประสิทธิภาพ เนื่องจากคอมไพเลอร์ปฏิบัติต่อ function method() เป็นฟังก์ชันที่สามารถรับอาร์กิวเมนต์ของตัวแปรได้

ด้วยเหตุนี้ i C++ เมื่อเราส่งผ่านอาร์กิวเมนต์ไปยังเมธอดที่ไม่มีพารามิเตอร์ในคำจำกัดความ จะมีข้อความแจ้งข้อผิดพลาดในหน้าต่างเอาต์พุตว่า 'ข้อผิดพลาด:มีอาร์กิวเมนต์มากเกินไปที่จะทำงาน 'void func()'

และในภาษา C จะยอมรับอาร์กิวเมนต์ที่ส่งผ่านและโค้ดภายในฟังก์ชันจะถูกดำเนินการ