บทช่วยสอน C ตัวชี้ ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ ตัวชี้คืออะไร?,วิธีการใช้ตัวชี้?,ตัวชี้ C โมฆะ,C ตัวชี้ละเอียด,
การเรียนรู้ภาษา C ตัวชี้เรื่องง่ายและสนุก ผ่านตัวชี้คุณสามารถลดความซับซ้อนของการดำเนินการบางส่วนของงานเขียนโปรแกรม C มีงานบางอย่างเช่นการจัดสรรหน่วยความจำแบบไดนามิกไม่มีตัวชี้จะไม่มีผลบังคับใช้ ดังนั้นผมอยากจะเป็นโปรแกรมเมอร์ C ดีชี้การเรียนรู้เป็นสิ่งที่จำเป็น
ที่คุณรู้ว่าแต่ละคนมีตัวแปรที่ตั้งของหน่วยความจำที่ตั้งหน่วยความจำแต่ละกำหนดที่อยู่ของผู้ประกอบการเข้าถึงสามารถใช้ยัติภังค์ (&) ซึ่งหมายถึงการอยู่ในหน่วยความจำ พิจารณาตัวอย่างต่อไปนี้ซึ่งจะกำหนดเอาท์พุทที่อยู่ตัวแปร:
#include <stdio.h> int main () { int var1; char var2[10]; printf("var1 变量的地址: %x\n", &var1 ); printf("var2 变量的地址: %x\n", &var2 ); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
var1 变量的地址: bff5a400 var2 变量的地址: bff5a3f6
โดยวิธีการเช่นข้างต้นเราเข้าใจสิ่งที่อยู่หน่วยความจำและวิธีการเข้าถึงได้ ลองดูที่สิ่งที่เป็นตัวชี้
ตัวชี้เป็นตัวแปรที่มีค่าที่อยู่ของตัวแปรอื่นคือที่อยู่ตรงกับที่ตั้งหน่วยความจำก่อนที่จะชอบหรือตัวแปรอื่น ๆ คงที่คุณต้องใช้หน่วยความจำที่อยู่ที่ตัวชี้ของตัวแปรอื่น ๆ ก็มีการประกาศ รูปแบบทั่วไปของการประกาศตัวแปรชี้คือ
type *var-name;
นี่พิมพ์เป็นตัวชี้ประเภทฐานที่มันจะต้องเป็นที่ถูกต้อง C ชนิดข้อมูลvar คือชื่อของตัวแปรตัวชี้ จะใช้ในการประกาศตัวชี้เครื่องหมาย * คูณใช้เครื่องหมายดอกจันเป็นเหมือนกัน แต่ในคำสั่งนี้ดอกจันถูกใช้เพื่อระบุตัวแปรที่เป็นตัวชี้ ต่อไปนี้เป็นคำประกาศชี้ที่ถูกต้อง:
int *ip; /* 一个整型的指针 */ double *dp; /* 一个 double 型的指针 */ float *fp; /* 一个浮点型的指针 */ char *ch /* 一个字符型的指针 */
ทั้งหมดชี้ชนิดของข้อมูลที่เกิดขึ้นจริงของค่าไม่ว่าจะเป็นจำนวนเต็มลอยสตริงหรือชนิดข้อมูลอื่น ๆ ที่เหมือนกันคือเลขฐานสิบหกหมายถึงการอยู่หน่วยความจำระยะยาว ข้อแตกต่างระหว่างประเภทที่แตกต่างกันของตัวชี้ข้อมูลตัวชี้เป็นตัวแปรหรือคงที่ชนิดข้อมูล
บ่อยครั้งที่จะใช้ตัวชี้เมื่อการดำเนินการดังต่อไปนี้: กำหนดตัวแปรชี้ที่อยู่ตัวแปรที่กำหนดให้กับตัวชี้เข้าถึงค่าของตัวแปรที่อยู่ที่มีตัวชี้ นี้จะกระทำโดยใช้ตัวดำเนินการ* เอกจะกลับค่าของตัวแปรตั้งอยู่ในที่อยู่ของตัวถูกดำเนินการตามที่ระบุไว้ตัวอย่างต่อไปนี้เกี่ยวข้องกับการกระทำเหล่านี้:
#include <stdio.h> int main () { int var = 20; /* 实际变量的声明 */ int *ip; /* 指针变量的声明 */ ip = &var; /* 在指针变量中存储 var 的地址 */ printf("Address of var variable: %x\n", &var ); /* 在指针变量中存储的地址 */ printf("Address stored in ip variable: %x\n", ip ); /* 使用指针访问值 */ printf("Value of *ip variable: %d\n", *ip ); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
Address of var variable: bffd8b3c Address stored in ip variable: bffd8b3c Value of *ip variable: 20
ในช่วงเวลาของการประกาศตัวแปรหากไม่ได้ที่อยู่ที่แน่นอนจะได้รับมอบหมายให้กำหนดค่า NULL ตัวแปรตัวชี้เป็นวิธีการเขียนโปรแกรมที่ดีค่าตัวชี้ฟูโมฆะเรียกว่าตัวชี้โมฆะ
ตัวชี้โมฆะถูกกำหนดไว้ในค่าคงที่ห้องสมุดมาตรฐานศูนย์ พิจารณาโปรแกรมต่อไปนี้:
#include <stdio.h> int main () { int *ptr = NULL; printf("ptr 的值是 %x\n", ptr ); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ptr 的值是 0
บนระบบปฏิบัติการมากที่สุดโปรแกรมไม่อนุญาตให้เข้าถึงอยู่หน่วยความจำ 0 เพราะหน่วยความจำถูกสงวนไว้สำหรับระบบปฏิบัติการ แต่อยู่หน่วยความจำ 0 มีความสำคัญเป็นพิเศษก็แสดงว่าตัวชี้ไม่ได้ชี้ไปยังสถานที่ที่สามารถเข้าถึงหน่วยความจำ แต่ตามอนุสัญญาว่าถ้าตัวชี้มีค่า null (ศูนย์บาท) มันจะสันนิษฐานว่ามันไม่ได้ชี้ไปที่ใด
เพื่อตรวจสอบตัวชี้โมฆะ, คุณสามารถใช้ถ้ามีคำสั่งดังต่อไปนี้:
if(ptr) /* 如果 p 非空,则完成 */ if(!ptr) /* 如果 p 为空,则完成 */
ใน C มีตัวชี้หลายแนวคิดที่เกี่ยวข้องกับการที่ง่ายมาก แต่สิ่งที่สำคัญมาก ด้านล่างมีบางแนวคิดที่สำคัญที่เกี่ยวข้องกับตัวชี้โปรแกรมเมอร์ C ต้องมีความชัดเจน:
概念 | 描述 |
---|---|
指针的算术运算 | 可以对指针进行四种算术运算:++、--、+、- |
指针数组 | 可以定义用来存储指针的数组。 |
指向指针的指针 | C 允许指向指针的指针。 |
传递指针给函数 | 通过引用或地址传递参数,使传递的参数在调用函数中被改变。 |
从函数返回指针 | C 允许函数返回指针到局部变量、静态变量和动态内存分配。 |