Computer >> Máy Tính >  >> Lập trình >> lập trình C

Các phép toán con trỏ khác nhau và các vấn đề với con trỏ trong ngôn ngữ C là gì?

Con trỏ là một biến có giá trị là địa chỉ của một biến khác, tức là địa chỉ trực tiếp của vị trí bộ nhớ. Giống như bất kỳ biến hoặc hằng số nào, bạn phải khai báo một con trỏ trước khi sử dụng nó để lưu trữ bất kỳ địa chỉ biến nào.

Hãy xem xét tuyên bố sau -

int qty = 179;

Biểu diễn của biến trong bộ nhớ như sau -

Các phép toán con trỏ khác nhau và các vấn đề với con trỏ trong ngôn ngữ C là gì?

Bạn có thể khai báo một con trỏ như sau -

Int *p;

Có nghĩa là ‘p’ là một biến con trỏ chứa địa chỉ của một biến số nguyên khác.

Toán tử địa chỉ (&) được sử dụng để khởi tạo một biến con trỏ.

Ví dụ -

int qty = 175;
int *p;
p= &qty;

Các phép toán con trỏ khác nhau và các vấn đề với con trỏ trong ngôn ngữ C là gì?

Để truy cập giá trị của biến, toán tử hướng (*) được sử dụng.

Ví dụ -

Các phép toán con trỏ khác nhau và các vấn đề với con trỏ trong ngôn ngữ C là gì?

‘*’ Có thể được coi là giá trị tại địa chỉ.

Hai câu lệnh tương đương với câu lệnh sau -

 p = &qty;
 n = *p; n =qty

Các hoạt động con trỏ khác nhau

Các hoạt động của con trỏ trong ngôn ngữ C được giải thích bên dưới -

  • Nhiệm vụ - Chúng ta có thể gán một địa chỉ cho một con trỏ bằng cách sử dụng &(toán tử địa chỉ).

  • Tìm kiếm giá trị - Nó không là gì khác ngoài hội nghị truyền hình, trong đó toán tử * cung cấp giá trị được lưu trữ trong vị trí trỏ tới.

  • Lấy địa chỉ con trỏ - Cũng giống như các biến khác, biến con trỏ có địa chỉ cũng như giá trị, với sự trợ giúp của toán tử địa chỉ, chúng ta có thể tìm thấy chính con trỏ đã được lưu trữ.

  • Thêm số nguyên vào con trỏ - Chúng ta có thể sử dụng toán tử + để thêm một số nguyên vào con trỏ hoặc một con trỏ vào một số nguyên. Ở đây, trong cả hai trường hợp, int được nhân với không có byte trong kiểu trỏ tới và kết quả được thêm vào địa chỉ gốc.

  • Tăng con trỏ - Nó là một phần tử của mảng thực hiện để di chuyển đến phần tử tiếp theo của mảng.

  • Trừ một số int khỏi một con trỏ - Chúng tôi đang sử dụng toán tử - (trừ) để trừ một số nguyên khỏi một con trỏ. Số nguyên được nhân với số byte trong loại trỏ tới và kết quả được trừ cho địa chỉ gốc.

  • Đang giảm dần con trỏ - Con trỏ giảm dần, trỏ đến vị trí trước đó thay vì trước đó, chúng ta có thể sử dụng cả dạng tiền tố và hậu tố cho toán tử giảm dần.

  • Phép trừ - Chúng ta có thể tìm thấy sự khác biệt của hai con trỏ. Nói chung, chúng tôi đã sử dụng để tìm hiểu xem các yếu tố khác nhau như thế nào.

  • So sánh - Chúng tôi sẽ sử dụng toán tử quan hệ để so sánh giá trị của hai con trỏ.

Ví dụ

Dưới đây là chương trình để chứng minh hoạt động của các phép toán con trỏ trong ngôn ngữ C -

#include<stdio.h>
main ( ){
   int x,y;
   //Declaring a pointer
   int *p;
   clrscr ( );
   x= 10;
   //Assigning value to a pointer
   p = &x;
   y= *p;
   printf ("Value of x = %d", x);
   printf ("x is stored at address %u", &x);
   printf ("Value of x using pointer = %d", *p);
   printf ("address of x using pointer = %u", p);
   printf (“value of x in y = %d", y);
   *p = 25;
   printf ("now x = %d", x)
   getch ( );
}

Đầu ra

Khi bạn thực hiện chương trình được đề cập ở trên, bạn nhận được kết quả sau -

Value of x = 10
x is stored at address = 5000
Address of x using pointer = 10
Address of x using pointer = 5000
Value of x in y = 10
Now x = 25