पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल के एड्रेस को स्टोर करता है।
पॉइंटर्स की विशेषताएं
- सूचक स्मृति स्थान बचाता है।
- मेमोरी लोकेशन तक सीधी पहुंच के कारण पॉइंटर का निष्पादन समय तेज होता है।
- पॉइंटर्स की मदद से, मेमोरी को कुशलता से एक्सेस किया जाता है यानी मेमोरी आवंटित की जाती है और गतिशील रूप से डील की जाती है।
- पॉइंटर्स का उपयोग डेटा संरचनाओं के साथ किया जाता है।
सूचक घोषणा, आरंभीकरण और पहुंच
निम्नलिखित कथन पर विचार करें -
int qty = 179;
मेमोरी में, वेरिएबल को नीचे दिखाए अनुसार दर्शाया जा सकता है -
घोषणा
पॉइंटर की घोषणा नीचे दिखाए अनुसार की जा सकती है -
Int *p;
इसका मतलब है कि 'p' एक पॉइंटर वेरिएबल है जो दूसरे इंटीजर वेरिएबल का पता रखता है।
आरंभीकरण
एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को इनिशियलाइज़ करने के लिए किया जाता है।
उदाहरण के लिए,
int qty = 175; int *p; p= &qty;
किसी वेरिएबल को उसके पॉइंटर से एक्सेस करना
वेरिएबल के मान को एक्सेस करने के लिए, इनडायरेक्शन ऑपरेटर (*) का उपयोग किया जाता है।
उदाहरण
पॉइंटर्स का उपयोग करके दो मैट्रिक्स को गुणा करने के लिए सी प्रोग्राम निम्नलिखित है -
#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