C语言p和&p的区别 c语言中,p为指针,那么*p和&p是一样的吗,什么区别

c\u8bed\u8a00\u4e2d\uff0cp\u4e3a\u6307\u9488\uff0c\u90a3\u4e48\uff0ap\u548c&p\u662f\u4e00\u6837\u7684\u5417\uff0c\u6709\u4ec0\u4e48\u533a\u522b\u5462\uff1f

\u533a\u522b\u4e3a\uff1aWindows 7\uff0c\u4e2d\u6587\u540d\u79f0\u89c6\u7a977\uff0c\u662f\u7531\u5fae\u8f6f\u516c\u53f8\uff08Microsoft\uff09\u5f00\u53d1\u7684\u64cd\u4f5c\u7cfb\u7edf\uff0c\u5185\u6838\u7248\u672c\u53f7\u4e3aWindows NT6.1\u3002Windows 7\u53ef\u4f9b\u5bb6\u5ead\u53ca\u5546\u4e1a\u5de5\u4f5c\u73af\u5883\uff1a\u7b14\u8bb0\u672c\u7535\u8111\u3001\u5e73\u677f\u7535\u8111\u3001\u591a\u5a92\u4f53\u4e2d\u5fc3\u7b49\u4f7f\u7528\u3002
c\u8bed\u8a00\u662f\u6bd4\u8f83\u57fa\u7840\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u662f\u5b66\u597d\u6c47\u7f16\u8bed\u8a00\u7684\u57fa\u7840\uff0c\u6240\u4ee5\u5b66\u597dc\u8bed\u8a00\u5f88\u91cd\u8981\u3002
\u5728\u4fe1\u606f\u5de5\u7a0b\u4e2d\uff0c\u6307\u9488\u662f\u4e00\u4e2a\u7528\u6765\u6307\u793a\u4e00\u4e2a\u5185\u5b58\u5730\u5740\u7684\u8ba1\u7b97\u673a\u8bed\u8a00\u7684\u53d8\u91cf\u6216\u4e2d\u592e\u5904\u7406\u5668(CPU)\u4e2d\u7684\u5bc4\u5b58\u5668(Register)\u3002\u6307\u9488\u4e00\u822c\u51fa\u73b0\u5728\u6bd4\u8f83\u8fd1\u673a\u5668\u8bed\u8a00\u7684\u8bed\u8a00\uff0c\u5982\u6c47\u7f16\u8bed\u8a00\u6216C\u8bed\u8a00\u3002\u9762\u5411\u5bf9\u8c61\u8bed\u8a00\u5982Java\u4e00\u822c\u907f\u514d\u7528\u6307\u9488\uff0c\u800c\u662f\u5f15\u7528\u3002

\u5728\u58f0\u660e\u6307\u9488\u53d8\u91cf\u7684\u65f6\u5019\uff0c*p\u8868\u793a\u58f0\u660ep\u662f\u6307\u9488\u53d8\u91cf\uff0c\u6bd4\u5982int *p(\u58f0\u660ep\u4e3aint\u578b\u6307\u9488\u53d8\u91cf)\uff1b\u5728\u8c03\u7528\u6307\u9488\u53d8\u91cf\u7684\u65f6\u5019\uff0c*p\u8868\u793a\u6307\u9488\u53d8\u91cfp\u6240\u6307\u5411\u7684\u53d8\u91cf\u7684\u503c\uff0c\u6bd4\u5982int a=5,b; int *p;(\u58f0\u660ep\u4e3aint\u578b\u6307\u9488\u53d8\u91cf)\uff0cp=a; b=*p;\uff08\u628ap\u6240\u6307\u5411\u7684\u53d8\u91cf\u7684\u503c\uff0c\u5373a\u7684\u503c\u8d4b\u7ed9\u53d8\u91cfb\uff09\u3002\u5bf9\u4e8e&p\uff0c\u5219\u662f\u4ee3\u8868\u53d8\u91cfp\u7684\u5730\u5740\uff0c\u663e\u7136\u548c\u4ee5\u4e0a*p\u7684\u4e24\u79cd\u610f\u601d\u90fd\u4e0d\u4e00\u6837

#include <stdio.h>
void main()
{
int *p;//P是一个整型指针
printf("%d\n",p);//以10进制整数的形式输出指针P的值
printf("%d\n",&p);//以10进制整数的形式输出指针P的地址
}

P是指针
&P是指针P的地址
*P是指针P的内容,也就是P所指向的那个地址

注意,内存中的地址都是16进制的,可以转化为10进制,不过不是很推荐这么做。

你好。
在你写的这段程序中,逐行来看。
int *p; //定义了一个整形的指针变量,*p,这里的*在定义的时候使用,是为了说明这是一个指针变量。
printf("%d\n",p); //输出指针变量p所指向的那个变量的值。
printf("%d\n",&p); //输出指针变量p所指向的那个变量的地址。

这里只是简单一说,如果你想进一步弄明白,建议去看C语言指针部分的相关内容。

p为指针变量 是变量就能存数据 指针变量就是表示变量里面存的是地址
p表示变量p里面存的内容 该例中p未被初始化内容未知
&p表示p变量本身的地址 &为取地址符 即取p的地址
*p表示读取地址为p的内存里面的数据

如图所示,按道理在学汇编后会懂得的



  • c璇█鎸囬拡p鍜a[5]鏈変綍鍖哄埆
    绛旓細p鏄寚鍚戞暟缁刾[5]棣栧湴鍧鐨勬寚閽堬紝瀹冩槸涓涓寚鍚慽nt鍨嬪彉閲忕殑鎸囬拡銆俛[5]鍙互鐞嗚В涓猴細*(a[5])锛屽嵆杩欎釜鏁扮粍鏄敱5涓寚鍚慽nt鍨嬪彉閲忕殑鎸囬拡缁勬垚鐨勩備緥濡傦細a[0],a[1]...杩欏嚑涓兘鏄寚閽堛傛墍浠p鍜a[0],a[1]...a[4]锛屽畠浠兘鏄寚鍚慽nt鍨嬪彉閲忕殑鎸囬拡銆傝祴鍊兼椂锛屽彧鑳藉皢鎸囬拡璧嬪肩粰鎸囬拡锛屾垨鑰呭湴鍧璧嬪肩粰...
  • C璇█涓*p鍜**p鏈変綍鍖哄埆
    绛旓細涓銆佽〃绀虹殑涓滆タ涓嶅悓 p琛ㄧずp浠h〃鐩稿簲鏁版嵁绫诲瀷鍦ㄥ瓨鍌ㄥ崟鍏冧腑瀛樺偍鐨勯鍦板潃锛岃岃繖涓瓨鍌ㄥ崟鍏冨瓨鍌ㄧ殑鏄浉搴旂被鍨嬫暟鎹殑鏁板笺俻琛ㄧずp涔熻〃绀哄湴鍧锛岀畝鍗曠殑璇达紝杩欎釜鍦板潃瀵瑰簲鐨勫瓨鍌ㄥ崟鍏冨瓨鍌ㄧ殑鏁颁篃鏄竴涓湴鍧锛岃屼笉鏄暟鍊硷紝鑰岃繖涓瀛樺偍鐨勫湴鍧瀵瑰簲鐨勫瓨鍌ㄥ崟鍏冨瓨鍌ㄧ殑鏁版嵁鎵嶆槸鐪熸鐨勭浉搴旂被鍨嬬殑鏁板笺備簩銆佸熀绫诲瀷涓嶅悓 渚嬪int...
  • C璇█p鍜s涓嶆槸鎸囬拡鍚,鍜嬭繕鑳界浉鍑?
    绛旓細棰樹腑p涓寮濮嬫寚鍚戝瓧绗﹂鍦板潃锛岀粡杩噖hile鍚庢寚鍚戝瓧绗︿覆鏈熬锛岀浉鍑忓氨鏄瓧绗︿覆鐨勯暱搴︺傚瓧绗︿覆鏄瓨鍦ㄨ繛缁殑鍐呭瓨绌洪棿锛屾墍浠ュ彲浠ヨ繖涔堢畻闀垮害銆
  • C璇█p鍜&p鐨勫尯鍒
    绛旓細P鏄寚閽 &P鏄寚閽圥鐨勫湴鍧 P鏄寚閽圥鐨勫唴瀹癸紝涔熷氨鏄疨鎵鎸囧悜鐨勯偅涓湴鍧 娉ㄦ剰锛屽唴瀛樹腑鐨勫湴鍧閮芥槸16杩涘埗鐨勶紝鍙互杞寲涓10杩涘埗锛屼笉杩囦笉鏄緢鎺ㄨ崘杩欎箞鍋氥
  • C璇█涓,p,&p,*p鏈変粈涔堝叧绯?
    绛旓細濡傛灉鐢ㄧ▼搴忚〃绀轰笂杩板唴瀹圭殑璇濆氨鍙互浣跨敤鎸囬拡銆傞鍏堝畾涔変竴涓寚閽p锛岃浠栨寚鍚戝湴鍧A锛屽湴鍧A涓綇鐨勬槸C锛岃寈鏈潵灞呬綇鐨勫湴鏂圭殑鍦板潃鏄疊銆侽K锛岀幇鍦ㄨ兘鐭ラ亾p锛*p,&p琛ㄧず浠涔堜簡鍚楋紵娌¢敊锛宲琛ㄧず姝ゆ寚閽堟寚鍚戠殑鍦板潃锛屽氨鏄疉锛岃*p琛ㄧず姝ゅ湴鍧涓眳浣忕殑浜猴紝灏辨槸C锛岃&p琛ㄧず杩欎釜閿鍞憳灞呬綇鐨勫湴鍧锛屽氨鏄疊銆
  • c璇█鐨勬寚閽堥儴鍒 *p涓p鍖哄埆
    绛旓細c璇█鐨勬寚閽堥儴鍒 *p涓p鍖哄埆濡備笅锛1銆佷綔鐢ㄤ笉鍚 p琛ㄧず姝ゆ寚閽堟寚鍚戠殑鍐呭瓨鍦板潃涓瓨鏀剧殑鍐呭銆俻鏄竴涓寚閽堝彉閲忕殑鍚嶅瓧锛岃〃绀烘鎸囬拡鍙橀噺鎸囧悜鐨勫唴瀛樺湴鍧銆2銆佽緭鍑哄唴瀹圭殑鏍煎紡涓嶅悓 p甯哥敤鍦ㄤ竴涓拰鎸囬拡绫诲瀷涓鑷寸殑鍙橀噺鎴栬呭父閲忋俻杈撳嚭涓涓寚閽堢殑鍦板潃锛岄氬父鏄緭鍑轰竴涓16杩涘埗鐨勬暟銆3銆佹晥鏋滀笉鍚 p鏄缂栬瘧鍣ㄤ粠鎸囧畾鐨...
  • C璇█涓*p,p,&p鐨勫尯鍒
    绛旓細&p鏄竴涓湴鍧锛岄『鐫杩欎釜鍦板潃鑳芥壘鍒颁竴涓硷紝杩欎釜鍊兼槸p锛岀劧鍚巔涔熸槸涓涓湴鍧锛岄『鐫杩欎釜鍦板潃鑳芥壘鍒板彟澶栦竴涓 p 鑰 p涓嶅啀鏄竴涓湴鍧锛屾槸涓涓彉閲忓氨璺 int a=1锛宐=2锛 閲屼竴鏍枫 閫氫織涓鐐硅В閲婃壘涓鏈C璇█绋嬪簭璁捐銆嬬殑涔︼紝鍥句功棣嗘湁涓鏈婄储寮曞ぇ鍏ㄣ嬬殑涔︼紝閲岄潰璁板綍鐫棣嗗唴鎵鏈変功鐨勪綅缃 ...
  • *p鍜p鐨勫尯鍒c璇█
    绛旓細c璇█*p鍜p鐨勫尯鍒槸锛氭寚閽堢涓嶅悓锛氱敤娉曚笉鍚屻佽繍绠楃涓嶅悓銆佸彉閲忎笉鍚屻佺被鍨嬩笉鍚屻1銆佹寚閽堢涓嶅悓锛氶氬父鐢ㄤ簬瑙e紩鐢ㄦ寚閽堬紝鍗宠幏鍙栨寚閽堟墍鎸囧悜鐨勫瓨鍌ㄥ崟鍏冪殑鍊硷紝鑰宲鍙槸涓涓寚閽堝彉閲忕殑鍚嶇О锛岀敤浜庡瓨鍌ㄦ寚閽堢殑鍦板潃銆2銆佺敤娉曚笉鍚岋細浠ヤ究鏇存敼鎴栬闂瓨鍌ㄥ湪鎸囧悜鐨勫瓨鍌ㄥ崟鍏冧腑鐨勫硷紝浣嗘槸p鍙槸鎸囬拡鍙橀噺锛屼笉鑳芥墽琛屾鎿嶄綔銆
  • c璇█涓,p.鍜宲->鏈変粈涔堝尯鍒
    绛旓細p. p鏄被鐨勫璞★紝鐐瑰悗闈㈣璺熺被涓殑鍏冪礌锛岃繖鏍峰氨瀹屾垚浜嗙被閲岄潰鍏冪礌鐨勮皟鐢紝鍏冪礌鍙互鏄彉閲忎篃鍙互鏄嚱鏁般俻->鏄紶鍦板潃锛屾瘮濡傝鏈夊彟涓涓彉閲廰锛屼綘p->a灏辨妸p鐨勫湴鍧涔熺粰a浜
  • C璇█缂栫▼涓氳繃&p鍜p鎸囦护鑾峰彇鐨勫唴瀛樺湴鍧鏄笉涓鏍风殑
    绛旓細褰撶劧涓嶇敤涓鏍枫p鏄寚閽堝彉閲忥紝鍜屼竴鑸彉閲忎笉鍚岀殑鏄紝瀹冮噷闈㈠瓨鏀剧殑鏄竴涓湴鍧銆傦紙浣犺繖閲宲瀛樻斁鐨勫氨鏄痗h鍙橀噺鐨勫湴鍧锛夈&鏄彇鍦板潃绗﹀彿锛屽彇鐨勬槸鍙橀噺鐨勫湴鍧銆傛槸鍙栨寚閽堟墍鎸囧悜鐨勫湴鍧鐨勫笺傦紙杩欓噷p鎸囧悜鐨勬槸ch锛屾墍浠ュ*p璧嬪硷紝灏辩瓑鍚屼簬瀵筩h璧嬪硷級銆傛墍浠ヤ綘鎵撳嵃p鏄彉閲廲h鐨勫湴鍧锛岃屼綘鎵撳嵃&p鎵撳嵃鐨勬槸鍙橀噺p鐨...
  • 扩展阅读:字符串中的指针 p p++ ... c语言 p &a ... 指针变量p和 p的区别 ... c语言中p与 p的区别 ... c语言 p+3 是什么意思 ... c语言 和&的区别 ... c语言和python区别 ... p和 p的区别 ... c语言中指针p和 p的区别 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网