मैं फ़ंक्शन में कोई बिंदु क्यों निर्दिष्ट नहीं कर सकता। जैसा कि आपने निम्न कोड में देखा है। मैं फ़ंक्शन रिटर्न के बाद सही पते पर इंगित पॉइंटर पी 1 असाइन नहीं कर सकता। लेकिन वैश्विक सूचक * पी के साथ, मैं पता जानकारी स्टोर कर सकता हूं।एक फंक्शन में सी सूचक असाइनमेंट
#include <stdio.h>
#include <stdlib.h>
int *p = NULL;
void test(int * pt1, int**pt2){
p = (int*)malloc(sizeof(int));
pt1 = p;
*pt2 = p;
printf("p points to %p\n", p);
printf("pt1 points to %p\n", pt1);
printf("pt2 points to %p\n", *pt2);
}
int main(void) {
int *p1 = NULL;
int *p2 = NULL;
printf("p points to %p\n", p);
printf("p1 points to %p\n", p1);
printf("p2 points to %p\n", p2);
test(p1, &p2);
printf("p points to %p\n", p);
printf("p1 points to %p\n", p1);
printf("p2 points to %p\n", p2);
return 0;
}
उत्पादन:
p points to (nil)
p1 points to (nil)
p2 points to (nil)
p points to 0x8acb008
pt1 points to 0x8acb008
pt2 points to 0x8acb008
p points to 0x8acb008
p1 points to (nil)
p2 points to 0x8acb008
सी में, सब कुछ पारित हो जाता है मूल्य से पॉइंटर्स कोई अपवाद नहीं है। –