亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言指針。來來來幫我看看

c語言指針。來來來幫我看看

C C# C++
kathria 2017-03-17 10:47:13
有以下程序? ? ?#include <stdio.h>? ? ?#include <stdlib.h>? ? ?void ?fun( double ?*p1,double ?*p2,double ?*s)? ? ?{ ?s = (double *)calloc( 1,sizeof(double) );? ? ? ? *s = *p1 + *( p2+1 );? ? ?}? ? ?main()? ? ?{ ?double ?a[2] = { 1.1, 2.2 }, b[2] = { 10.0, 20.0 }, *s=a;? ? ? ? fun( a, b, s );? ? ? ? printf( "%5.2f\n", *s);? ? ?}程序的輸出結果是A) ?21.10B) ?11.10C) ?12.10D) ? ?1.10為什么是d。不懂為什么s還指向a
查看完整描述

2 回答

已采納
?
TDYu

TA貢獻3條經驗 獲得超1個贊

首先主程序中s指向a的地址,你也確實把這個地址丟給fun函數的s了。

然后你fun函數里的s重新分配了地址,這時代表fun函數里的s指向別的位置沒錯。

但是重點是,你主程序中的s并沒有改變指向,它依然指向a沒變過,改變的只是你在fun函數里的s,這兩邊的s是存活在不同的區域完全不同的兩個。

你可以想像成兩個一樣名字的人住到一起(指向一樣位置),但后來有一個搬走了(fun函數里的),可是原本的那個確實還在那屋沒走。

查看完整回答
反對 回復 2017-03-17
  • kathria
    kathria
    可以叫一樣的名字嗎?平常做題的時候指針的改變不就會影響main函數里面指針指的值嗎
  • TDYu
    TDYu
    身在不同區域可以同名啊。但是你現在的狀況是,main里面的指針指向從沒改變過。要是還不懂今晚再圖解給你看,現在沒法畫。
?
慕粉13202587281

TA貢獻9條經驗 獲得超1個贊

因為重新申請內存了

查看完整回答
反對 回復 2017-04-03
  • 2 回答
  • 0 關注
  • 1721 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號