सी में, मैं इसे एक फ़ंक्शन पर भेजकर पॉइंटर का मान सेट करने का प्रयास कर रहा हूं, लेकिन मान फ़ंक्शन के बाहर नहीं बदलता है।फ़ंक्शन के माध्यम से पॉइंटर संदर्भ कैसे सेट करें
#include <stdio.h>
void foo(char* str) {
char* new_str = malloc(100);
memset(new_str, 0, 100);
strcpy(new_str, (char*)"new test");
str = new_str;
}
int main (int argc, char *argv[]) {
char* str = malloc(100);
memset(str, 0, 100);
strcpy(str, (char*)"test");
foo(str);
printf("str = %s\n", str);
}
मैं बाहर प्रिंट करना चाहते हैं:
str = new test
लेकिन इस कोड को प्रिंट आउट:
str = test
किसी भी मदद की सराहना की होगी यहाँ मेरी कोड है। अग्रिम में धन्यवाद।
"कोई पास-संदर्भ द्वारा सी में" - नहीं सरणियों संदर्भ द्वारा पारित कर दिया है? – naivnomore
@naivnomore मूल रूप से आप एक सूचक को पास करते हैं जो (कम से कम वाक्य रचनात्मक रूप से) C++ में संदर्भ पारित करने के लिए अलग होता है। – Eiko
नहीं, वे नहीं हैं। पैरामीटर के रूप में पारित होने पर पॉइंटर्स को Arrays क्षय, लेकिन यह अभी भी पास-दर-संदर्भ नहीं है क्योंकि सूचक तर्क के मान को बदलना सरणी को प्रभावित नहीं करेगा। –