c/c++ ×óÖµ ÓÒÖµÌÖÂÛ
×óÖµÐÔ£¨lvalueness£©ÔÚC/C++ÖÐÊDZí´ïʽµÄÒ»¸öÖØÒªÊôÐÔ¡£Ö»ÓÐͨ¹ýÒ»¸ö×óÖµ±í´ïʽ²ÅÄÜÀ´ÒýÓü°¸ü¸ÄÒ»¸ö¶ÔÏó£¨object£©µÄÖµ¡££¨Ä³Ð©Çé¿öÏ£¬ÓÒÖµ±í´ïʽҲÄÜÒýÓã¨refer£©µ½Ä³Ò»¸ö¶ÔÏ󣬲¢ÇÒ¿ÉÄܼä½ÓÐ޸ĸöÔÏóµÄÖµ£¬ºóÊö£©¡£
ºÎν¶ÔÏó£¿Èç¹ûûÓÐÃ÷ȷ˵Ã÷£¬ÕâÀï˵µÄ¶ÔÏ󣬺ÍÏÁÒåµÄÀà/¶ÔÏó£¨class/object£©Ïà±È£¬¸üΪ¹ã·º¡£ÔÚC/C++ÖУ¬ËùνµÄ¶ÔÏóÖ¸µÄÊÇÖ´Ðл·¾³ÖÐÒ»¿é´æ´¢ÇøÓò£¨a region of storage£©£¬¸Ã´æ´¢ÇøÓòÖеÄÄÚÈÝÔò´ú±í£¨represent£©Á˸öÔÏóµÄÖµ£¨value£©¡£×¢Òâµ½ÎÒÃÇÕâÀïËù˵µÄ"´ú±í"£¬¶ÔÓÚÒ»¸ö¶ÔÏó£¬Èç¹ûÎÒÃÇÐèҪȡ³ö£¨fetch£©ËüµÄÖµ£¬ÄÇôÎÒÃÇÐèҪͨ¹ýÒ»¶¨µÄÀàÐÍ£¨type£©À´ÒýÓÃËü¡£Ê¹Óò»Í¬µÄÀàÐÍ£¬¶Ôͬһ¶ÔÏóÖеÄÄÚÈݵĽâÊͻᵼÖ¿ÉÄܵõ½²»Í¬µÄÖµ£¬»òÕß²úÉúijЩ䶨ÒåµÄÐÐΪ¡£
ÔÚ½éÉÜ×óֵ֮ǰ£¬ÎÒÃÇ»¹ÐèÒªÒýÈëÒ»¸ö¸ÅÄ ±äÁ¿£¨variable£©¡£¾³£ÓÐÈË»á°Ñ±äÁ¿Óë¶ÔÏó¶þÕß»ìÏý¡£Ê²Ã´½Ð±äÁ¿£¿Ëùν±äÁ¿ÊÇÒ»ÖÖÉùÃ÷£¬Í¨¹ýÉùÃ÷£¬ÎÒÃǰÑÒ»¸öÃû×Ö£¨name£©ÓëÒ»¸ö¶ÔÏó¶ÔÓ¦ÆðÀ´£¬µ±ÎÒÃÇʹÓøÃÃû×Öʱ£¬¾Í±íʾÁËÎÒÃǶԸöÔÏó½øÐÐijÖÖ²Ù×÷¡£µ«ÊDz¢²»ÊÇÿ¸ö¶ÔÏó¶¼ÓÐÃû×Ö£¬Ò²²¢²»Òâζ×ÅÓжÔÓ¦µÄ±äÁ¿¡£±ÈÈçÁÙʱ¶ÔÏó£¨temporary object£©¾ÍûÓÐÒ»¸öÃû×ÖÓëÖ®¹ØÁª£¨²»ÒªÎó³ÆÎªÁÙʱ±äÁ¿£¬ÕâÊDz»ÕýÈ·µÄ˵·¨£©¡£
1 CÖеÄ×óÖµ
1.1°´ÕÕCµÄ¶¨Ò壬×óÖµÊÇÒ»¸öÒýÓõ½¶ÔÏóµÄ±í´ïʽ£¬Í¨¹ý×óÖµÎÒÃÇ¿ÉÒÔÈ¡³ö¸Ã¶ÔÏóµÄÖµ¡£Í¨¹ý¿ÉÐ޸ĵÄ×óÖµ±í´ïʽ£¨modifiable lvalue£©ÎÒÃÇ»¹¿ÉÒÔÐ޸ĸöÔÏóµÄÖµ¡££¨ÐèҪ˵Ã÷µÄÊÇ£¬ÔÚC++ÖУ¬×óÖµ»¹¿ÉÒÔÒýÓõ½º¯Êý£¬¼´±í´ïʽfÈç¹ûÒýÓõÄÊǺ¯ÊýÀàÐÍ£¬ÄÇôÔÚCÖÐËü¼È²»ÊÇ×óÖµÒ²²»ÊÇÓÒÖµ£»¶øÔÚC++ÖÐÔòÊÇ×óÖµ£©¡£ÒòΪ×óÖµÒýÓõ½Ä³Ò»¶ÔÏó£¬Òò´ËÎÒÃÇʹÓÃ&¶Ô×óÖµ±í´ïʽ£¨Ò²Ö»ÄܶÔ×óÖµ±í´ïʽºÍº¯Êý£©È¡Ö·ÔËËãʱ£¬¿ÉÒÔ»ñµÃ¸Ã¶ÔÏóµÄµØÖ·£¨ÓÐÁ½ÖÖ×óÖµ±í´ïʽ²»ÄÜȡַ£¬Ò»ÊǾßÓÐλÓò£¨ bit-field £©ÀàÐÍ£¬ÒòΪʵÏÖÖÐ×îСѰַµ¥Î»ÊÇ byte£»ÁíÒ»¸öÊǾßÓÐregisterÖ¸¶¨·û£¬Ê¹ÓÃregisterÐÞÊεıäÁ¿±àÒëÆ÷¿ÉÄÜ»áÓÅ»¯µ½¼Ä´æÆ÷ÖУ©¡£
Ex1.1
char a[10]; // a is an lvalue representing an array of 10 ints.
char (* p)[10]=&a; // &a is the address of the array a.
const char* p="hello world"; //"hello world" is an lvalue of type char[12]
&
Ïà¹ØÎĵµ£º
ѧÁËCÈ»ºóC++£¬È»ºóMFC/Windows,È»ºóÊÇC#,ÆäÖÐÊý¾ÝÀàÐͺܶ࣬ÓÉ»ù±¾ÀàÐÍÑÜÉúµÄtypedefÀàÐÍÒ²N¶à¡£ÊìÖª»ù±¾Êý¾ÝÀàÐÍÊÇÎÒÃÇÕýÈ·±í´ïʵ¼ÊÎÊÌâÖи÷ÖÖÊý¾ÝµÄǰÌᣬÒò´ËÎÒ·ÖÀà×ܽáÁËÒ»ÏÂC/C++/Windows /C#»ù±¾Êý¾ÝÀàÐÍ£¬ÒÔ±ãÈÕºó²éÔÄ¡£
ANSI C/C++»ù±¾Êý¾ÝÀàÐÍ£º
Type
Size
......
C#ÀࣺÀàÊÇC# Öй¦ÄÜ×îΪǿ´óµÄÊý¾ÝÀàÐÍ£¬ÀàÒ²¶¨ÒåÁËÊý¾ÝÀàÐ͵ÄÊý¾ÝºÍÐÐΪ¡£È»ºó£¬³ÌÐòÔ±¿ÉÒÔ´´½¨×÷Ϊ´ËÀàµÄʵÀýµÄ¶ÔÏó¡£
C#½á¹¹Ì壺½á¹¹ÌåÊÇÇáÁ¿Ð͵ÄÀ࣬ʹÓÿªÏúÏà¶ÔÓÚÀà½ÏС¡£
C#ÀàºÍC#½á¹¹ÌåÁ½ÕߵĹØÏµ£º
1.Êý¾ÝÀàÐÍ£ºÀàºÍ½á¹¹Ìå¶¼ÊÇÊý¾ÝÀàÐÍ£¬ÀàÊÇÒýÓÃÀàÐÍ£¬½á¹¹ÌåÊÇÖµÀàÐÍ¡£
2.¼Ì³ÐÐÔ£ºÀà¿ÉÒԼ̳кͱ»¼Ì³Ð£¬¶ø½á¹ ......
#include <windows.h>
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd )
{
OPENFILENAME ofn;
//ÔÚÄÚ´æÖпª±ÙÒ»¿é¿Õ¼ä£¬´æ·ÅÓû§Ñ¡È¡µÄÎļþÃû
char szFile[MAX_PATH];//MAX_PATH ......
Í·ÎļþµÄ×÷ÓÃ
ÔçÆÚµÄ±à³ÌÓïÑÔÈçBasic¡¢Fortran ûÓÐÍ·ÎļþµÄ¸ÅÄC++/C ÓïÑԵijõѧÕßËäÈ»»áÓÃʹÓÃÍ·Îļþ£¬µ«³£³£²»Ã÷ÆäÀí¡£ÕâÀï¶ÔÍ·ÎļþµÄ×÷ÓÃÂÔ×÷½âÊÍ£º
£¨1£©Í¨¹ýÍ·ÎļþÀ´µ÷Óÿ⹦ÄÜ¡£ÔںܶೡºÏ£¬Ô´´úÂë²»±ã£¨»ò²»×¼£©ÏòÓû§¹«²¼£¬Ö»ÒªÏòÓû§ÌṩͷÎļþºÍ¶þ½øÖƵĿ⼴¿É¡£Óû§Ö»ÐèÒª°´ÕÕÍ·ÎļþÖеĽӿÚÉùÃ÷À´µ÷Óÿ⹦ ......
Ò»¡¢
1¡¢¹ØÓÚ×Ö½Ú˳Ðò£º»°ËµÔÚÌØ¶¨µÄÓ²¼þƽ̨ÉÏ£¬¶à×Ö½ÚÊý¾ÝµÄ˳Ðò´æ·ÅÓÐÁ½ÖÖ·½Ê½£¨little-endian¡¢big-endian£©¡£Ç°ÕßµÄÊý¾ÝµÄµÍ×Ö½Ú
²¿·Ö´æ·ÅÔڵ͵ØÖ·Äڴ棬ºóÕßÇ¡ºÃÏà·´¡£PCÒ»°ãÊÇ»ùÓÚIA-32΢´¦ÀíÆ÷£¬ÊôÓÚlittle-endian¡£Ä³Ð©RISC¼Ü¹¹µÄCPU£¬ÀýÈçSPARC¡¢
POWERPCµÈ£¬ÔòÊ ......