क्यों फ़ंक्शन पॉइंटर को संदर्भित करना और कैसे "कुछ भी नहीं" करता है? here से अधिकफ़ंक्शन पॉइंटर का डिफ्रेंसिंग कैसे होता है?
#include<stdio.h>
void hello() { printf("hello"); }
int main(void) {
(*****hello)();
}
एक टिप्पणी से::
समारोह संकेत भिन्नता केवल ठीक है, लेकिन जिसके परिणामस्वरूप समारोह डेसिग्नेटर तुरंत हो जाएगा
यह है कि मैं क्या बात कर रहा हूँ है फ़ंक्शन पॉइंटर पर वापस परिवर्तित
और एक जवाब here से:
अपसंदर्भन (तरह से आपको लगता है) एक समारोह के सूचक का अर्थ है: एक कोड स्मृति तक पहुँचने के रूप में यह एक डेटा स्मृति होगा।
फ़ंक्शन पॉइंटर को इस तरह से संदर्भित नहीं माना जाता है। इसके बजाए, यह कहा जाता है।
मैं "कॉल" के साथ "dereference" पक्ष नाम का उपयोग करूंगा। यह ठीक है।
वैसे भी: सी इस तरह में बनाया गया है कि दोनों समारोह नाम पहचानकर्ता के रूप में चर पकड़े समारोह के सूचक एक ही मतलब है और साथ ही: कोड स्मृति को पता। और यह पहचानकर्ता या परिवर्तनीय पर कॉल() वाक्यविन्यास या तो का उपयोग कर मेमोरी पर कूदने की अनुमति देता है।
कैसे बिल्कुल करता है एक समारोह सूचक काम के dereferencing?
क्या आप कृपया "..." फ़ंक्शन को मूल कार्य मूल्य में रूपांतरित रूप से परिवर्तित कर सकते हैं? क्या आप फ़ंक्शन के रिटर्न वैल्यू का जिक्र कर रहे हैं? यदि हां, तो इसका मतलब यह है कि कंपाइलर स्वचालित रूप से उस रिटर्न वैल्यू को एक लाइवल्यू के रूप में रखता है, हालांकि फ़ंक्शन रिटर्न वैल्यू एक रावल्यू था। धन्यवाद! – shorttermmem