मैं lvalue के बारे में कुछ बातें समझने कोई सरणी है, लेकिन मुझे समझ नहीं आता कि कैसे नीचे कोड एक त्रुटि देता है:क्यों foo ((& i) ++) Lvalue आवश्यक त्रुटि देता है। वहाँ जुड़े
#include<stdio.h>
void foo(int *);
int main()
{
int i=10;
foo((&i)++);
}
void foo(int *p)
{
printf("%d",*p);
}
6:13: त्रुटि: lvalue वेतन वृद्धि संकार्य foo के रूप में आवश्यक ((& i) ++); ^
क्योंकि 'और मैं' घ एक * lvalue * नहीं है, और '++' ऑपरेटर एक की आवश्यकता है। यह लगभग 'और i = &i + 1;' के बराबर है, क्या अंतिम अभिव्यक्ति आपको समझ में आता है? –
परिवर्तनीय 'i' जब उपयोग किया जाता है वह एक लवल्यू होता है। यदि आपके पास 'int * p = & i; 'जैसे पॉइंटर था तो' p' भी एक लवल्यू होगा। लेकिन 'और मैं स्वयं * एक * लाभा नहीं है। शायद आपको [इस मूल्य श्रेणी संदर्भ] में दिलचस्पी होगी (http://en.cppreference.com/w/c/language/value_category)? ध्यान दें कि कैसे [गैर-आभासी अभिव्यक्तियों की सूची] (http://en.cppreference.com/w/c/language/value_category#Non-lvalue_object_expressions) में "ऑपरेटर का पता" शामिल है। –
[संभावित वृद्धि के रूप में आवश्यक लैवल्यू] [https://stackoverflow.com/questions/3364445/lvalue-required-as-increment-operand) – ssharma