पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल का पता स्टोर करता है।
पॉइंटर्स की विशेषताएं
- पॉइंटर मेमोरी स्पेस बचाता है।
- मेमोरी लोकेशन तक सीधी पहुंच के कारण पॉइंटर का निष्पादन समय तेज होता है।
- पॉइंटर्स की सहायता से, मेमोरी को कुशलतापूर्वक एक्सेस किया जाता है यानी मेमोरी डायनामिक रूप से आवंटित और डी-आवंटित होती है।
- पॉइंटर्स का उपयोग डेटा स्ट्रक्चर्स के साथ किया जाता है।
पॉइंटर घोषणा, इनिशियलाइज़ेशन और एक्सेस
निम्नलिखित स्टेटमेंट पर विचार करें:
int qty = 179;
घोषणा
पॉइंटर घोषित करना निम्नानुसार किया जा सकता है:
int *p;
इसका अर्थ है 'p' एक पॉइंटर वेरिएबल है जो दूसरे पूर्णांक वेरिएबल का पता रखता है।
इनिशियलाइज़ेशन
पॉइंटर वेरिएबल को इनिशियलाइज़ करने के लिए एड्रेस ऑपरेटर (&) का उपयोग किया जाता है।
उदाहरण के लिए,
int qty = 175; int *p; p = &qty;
अपने पॉइंटर के माध्यम से वेरिएबल एक्सेस करना
वेरिएबल के मान को एक्सेस करने के लिए, इंडायरेक्शन ऑपरेटर (*) का उपयोग किया जाता है।
उदाहरण
पॉइंटर्स का उपयोग करके दो मैट्रिक्स को गुणा करने का C प्रोग्राम:
#include <stdio.h>
#define ROW 3
#define COL 3
/* फंक्शन घोषणाएं */
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("पहली मैट्रिक्स के एलिमेंट्स दर्ज करें आकार %dx%d\n", ROW, COL);
matrixInput(mat1);
printf("दूसरी मैट्रिक्स के एलिमेंट्स दर्ज करें आकार %dx%d\n", ROW, COL);
matrixInput(mat2);
matrixMultiply(mat1, mat2, product);
printf("दोनों मैट्रिक्स का गुणनफल है: \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;
}
}
}
आउटपुट
पहली मैट्रिक्स के एलिमेंट्स दर्ज करें आकार 3x3 2 3 1 2 5 6 2 6 8 दूसरी मैट्रिक्स के एलिमेंट्स दर्ज करें आकार 3x3 1 2 1 2 3 4 5 6 7 दोनों मैट्रिक्स का गुणनफल है: 13 19 21 42 55 64 54 70 82