পয়েন্টার হলো একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের ঠিকানা সংরক্ষণ করে।
পয়েন্টার বৈশিষ্ট্য
- পয়েন্টার মেমরি স্পেস বাঁচায়।
- মেমরি লোকেশনে সরাসরি অ্যাক্সেসের কারণে পয়েন্টারের এক্সিকিউশন টাইম দ্রুত।
- পয়েন্টারের সাহায্যে মেমরি দক্ষতার সাথে অ্যাক্সেস করা যায় অর্থাৎ মেমরি ডাইনামিক্যালি অ্যালোকেট এবং ডি-অ্যালোকেট করা যায়।
- পয়েন্টার ডেটা স্ট্রাকচারের সাথে ব্যবহৃত হয়।
পয়েন্টার ঘোষণা, ইনিশিয়ালাইজেশন এবং অ্যাক্সেস
নিচের স্টেটমেন্টটি বিবেচনা করুন:
int qty = 179;
মেমরিতে, ভেরিয়েবলটি নিচের মত রিপ্রেজেন্ট করা হয়:

ঘোষণা
পয়েন্টার ঘোষণা নিম্নরূপ করা হয়:
Int *p;
এটি মানে 'p' একটি পয়েন্টার ভেরিয়েবল যা অন্য একটি ইন্টিজার ভেরিয়েবলের ঠিকানা ধারণ করে।
ইনিশিয়ালাইজেশন
অ্যাড্রেস অপারেটর (&) ব্যবহার করে পয়েন্টার ভেরিয়েবল ইনিশিয়ালাইজ করা হয়।
উদাহরণস্বরূপ,
int qty = 175; int *p; p= &qty;
পয়েন্টার মাধ্যমে ভেরিয়েবল অ্যাক্সেস
ভেরিয়েবলের ভ্যালু অ্যাক্সেস করার জন্য ইন্ডিরেকশন অপারেটর (*) ব্যবহার করা হয়।
উদাহরণ
পয়েন্টার ব্যবহার করে দুটি ম্যাট্রিক্স গুণ করার C প্রোগ্রাম:
#include <stdio.h> #define ROW 3 #define COL 3 /* Function declarations */ void matrixInput(int mat[][COL]); void matrixPrint(int mat[][COL]); void matrixMultiply(int mat1[][COL], int mat2[][COL], int res[][COL]); int main() { int mat1[ROW][COL]; int mat2[ROW][COL]; int product[ROW][COL]; printf("Enter elements in first matrix of size %dx%d\n", ROW, COL); matrixInput(mat1); printf("Enter elements in second matrix of size %dx%d\n", ROW, COL); matrixInput(mat2); matrixMultiply(mat1, mat2, product); printf("Product of both matrices is : \n"); matrixPrint(product); return 0; } void matrixInput(int mat[][COL]) { int row, col; for (row = 0; row < ROW; row++) { for (col = 0; col < COL; col++) { scanf("%d", (*(mat + row) + col)); } } } void matrixPrint(int mat[][COL]) { int row, col; for (row = 0; row < ROW; row++) { for (col = 0; col < COL; col++) { printf("%d ", *(*(mat + row) + col)); } printf("\n"); } } void matrixMultiply(int mat1[][COL], int mat2[][COL], int res[][COL]) { int row, col, i; int sum; for (row = 0; row < ROW; row++) { for (col = 0; col < COL; col++) { sum = 0; for (i = 0; i < COL; i++) { sum += (*(*(mat1 + row) + i)) * (*(*(mat2 + i) + col)); } *(*(res + row) + col) = sum; } } }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের আউটপুটটি দেখায়:
Enter elements in first matrix of size 3x3 2 3 1 2 5 6 2 6 8 Enter elements in second matrix of size 3x3 1 2 1 2 3 4 5 6 7 Product of both matrices is : 13 19 21 42 55 64 54 70 82