& (Ampersand) ในภาษาซี

ChaV
Mar 8, 2022

--

Photo by TJ Arnold on Unsplash

เท่าที่จำความได้ เวลารับข้อมูลเข้ามาซึ่งใช้ scanf() ต้องใส่ & ไว้หน้าตัวแปรที่เราไว้ใช้เก็บข้อมูล ยกเว้นถ้าข้อมูลที่รับมาเป็นข้อความ ก็ไม่ต้องใส่ จำแบบนี้มาตลอด จนวันหนึ่งได้คุยกับเพื่อน เพื่อนก็บอกว่าใส่หรือไม่ใส่ก็ได้ ก็แบบเอ๊ะ เลยไปหาข้อมูลมา ก็ได้กลายมาเป็นบทความนี้

& คืออะไร

& เป็นการระบุที่อยู่ของตัวแปรนั่น ๆ หรือก็คือใช้เพื่อเป็นตัวรับที่อยู่ของตัวแปร เช่น

scanf(“%d”, &n); 

จะเป็นการเก็บค่าอะไรก็ตามที่ผู้ใช้ป้อนเข้ามาซึ่งเป็นข้อมูลชนิด integer โดยจะเก็บใส่ตำแหน่งที่อยู่ของตัวแปร n

แล้วทำไมถ้าเป็นข้อความไม่ต้องใส่ล่ะ?

char name[5];
scanf("%s", name);

เนื่องจากว่าในภาษาซีไม่มีตัวแปรชนิด string มีแต่เพียงอาเรย์ของ characters ในที่นี้ก็คือ name สมมติว่าเราป้อนค่า ‘Anne’ เข้าไปจะได้อาเรย์จะเก็บข้อความดังรูปด้านล่าง

โดยตัวแปร name ซึ่งใช้ string format (%s) ก็จะเป็นพอยเตอร์ที่ชี้ไปที่ตำแหน่งที่อยู่ของสมาชิกตัวแรกในอาเรย์ (&name[0]) ทันที เราจึงไม่จำเป็นต้องใส่ & เพื่อระบุที่อยู่ของตำแหน่ง

คร่าว ๆ ก็มีประมาณนี้ ถ้ามีข้อมูลอะไรเพิ่มเติมจะแวะเวียนมาใส่เจ้าค่ะ

Source : https://www.geeksforgeeks.org/not-used-strings-scanf-function/

--

--

ChaV
ChaV

Written by ChaV

Christmas Weerachitoragarn | PSU | Enginearing |

No responses yet