c語言指標和函式的問題,C語言指標和函式的問題。!

2022-03-07 19:46:24 字數 3159 閱讀 5365

1樓:

樓主你好。

#include

int main()

;printf("修改前,陣列元素的值:");

//**段1

print_array(a, 5);

printf("修改後,陣列元素的值:");

//**段2

change_values(a, 5, 3);

print_array(a, 5);

return 0;

}//函式功能:修改一位陣列元素的值,規則是:新值=原值*k//引數:

p是指標變數,存放一位陣列首地址,n是元素的個數,k是乘數void change_values(int *p,int n,int k)

}//函式功能:輸出一位陣列元素的值

void print_array(int *p,int n) //引數:p是指標變數,存放一位陣列首地址

printf("\n");

}輸出:

修改前,陣列元素的值:10 15 20 25 30修改後,陣列元素的值:30 45 60 75 90press any key to continue

2樓:匿名使用者

你的k到底是幾啊、?以8為例

**1change_values(a,5,8);

**2print_array(a,5);

**3int i;

for(i=0;i

*(a+i)=*(a+i)*k;

**4int j;

for(j=0;j

printf("%d ",*(a+i));

好久沒動c了。不知道有沒有錯誤。臨時這臺機器上沒裝編譯器,試試吧

3樓:于于祥祥

這。。。。。。。

自己寫撒真心的

4樓:微微賺

這麼給你解釋吧,指標就相當是一個門牌號。第一個呢,是因為f()函式的引數是指標,就是「門牌號」,所以他們交換的時候是把門牌號進行了交換。所以當你第二次進行訪問的時候,原來a房間變成了b房間,所以當你想要讓a房間裡的人出來的時候,這個時候原來住在裡面的b君就出來了。

所以發生了交換。

第二個呢,傳的是形參,形參就是把a君複製一個(我們理解為克隆一個a君),然後克隆一個b君,最後把克隆人交換。然後我們輸出的時候,我們卻要a房間裡的人,那個時候,a君還在自己的房間,當然他們出來的時候,就是沒有交換了。如果,要交換,我們可以輸出克隆人。

那麼看到的結果就是已經發生了交換。

我把第二個**,給你稍微改下,就是輸出克隆人,那麼你就會看到,我們原來交換的只是克隆人了。

**********==

第二個#include

void main()

void f(int x,int y)

輸入5,9

輸出9,5

**********=

有不明白的繼續追問!

c語言這個f函式再指標

5樓:兄弟連教育北京總校

c語言中, 函式

名也稱為函式的指標,所以c語言中函式名就是一

個指標。

1,例如:

showmenu是一個函式名,可以看到他的值是一個地址。

&showmenu是對函式取地址,指向和showmenu同樣的地址。

可以看出,showmenu是佔用一個位元組的,而作為指標&showmenu卻佔用四個位元組。

所以,函式名佔用空間的。

2,‍函式指標

指向函式的指標包含了函式的地址,可以通過它來呼叫函式。宣告格式如下:

型別說明符 (*函式名)(引數)

其實這裡不能稱為函式名,應該叫做指標的變數名。這個特殊的指標指向一個返回整型值的函式。指標的宣告筆削和它指向函式的宣告保持一致。

指標名和指標運算子外面的括號改變了預設的運算子優先順序。如果沒有圓括號,就變成了一個返回整型指標的函式的原型宣告。

例如:void (*fptr)();

把函式的地址賦值給函式指標,可以採用下面兩種形式:

取地址運算子&不是必需的,因為單單一個函式識別符號就標號表示了它的地址,如果是函式呼叫,還必須包含一個圓括號括起來的參數列。可以採用如下兩種方式來通過指標呼叫函式:

x=(*fptr)(); x=fptr();

第二種格式看上去和函式呼叫無異。但是有些程式設計師傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的。下面舉一個例子:

void (*funcp)(); void filefunc(),editfunc();

main() void filefunc()

void editfunc()

程式輸出為:

filefunc editfunc

6樓:

28) f的呼叫並不會改變abc的值,所以還是原值4,3,5 選d

29)q為null,不能取內容,所以*q=0是錯誤的,選a

關於c語言 指標,函式呼叫的問題

關於c語言指標函式的使用問題

7樓:莊政警

你的**裡犯了c語言裡的一個很常見的錯誤:函式返回了一個區域性變數地址int *add(int a, int b)int* p = add(a, b); //p指向的記憶體隨時可能被改寫,你看到的正好就是輸出完以後它就變了,(因為add函式從執行完到輸出間隔的時間"很短",3還存在,而從程式暫停到你觀察這段時間"很長",記憶體已經被修改了,你可以再輸出一次*p看看)

你把c定義成靜態的,再看看

int *add(int a, int b)

c語言初學 有關函式和指標的一個問題?

8樓:最大的_大寶寶

function是一個函式。f1是一個函式指標,用於呼叫function。題目寫得有點複雜,簡化一下是這樣的,兩種呼叫方式都可以:

9樓:瀋陽_小凡

(*f1)就是function的函式。而且s是常量的指標,是不可以傳給變數指標的。

c語言指標呼叫函式問題,急求解釋(本題是《c和指標》上的題目)

C語言指標函式,c語言中指標怎麼使用?

應該是的,還可以用f a i 的形式。去程式設計嗎?我學這些的是一頭霧水。c語言中指標怎麼使用?1 使用場景 使用指標時,必須將它指向一個變數的地址或者為它分配 空間方能使用,如下所示 include include int main int argc,char const argv int b,d...

c語言符指標和字元陣列的區別c語言字元指標和字元陣列的區別

首先第一點,非常重要的一點 指標和陣列是不同的兩個型別!我們從可以從c語言標準文件中得知 iso iec 9899 1999 programing language c 6.2.5 types 20 這說明了什麼是陣列型別 同樣在20 說明了什麼是指標型別。在瞭解了兩種型別的基礎上,我們瞭解陣列和指...

c語言pow 函式問題,C語言pow 函式問題。

應該浮點型整型數點面資料丟失造精度準確程式實參a,b,c都整型所warning資料精度丟失 樓下的說的都對,那我給你提供一個另外的方法的,直接不使用math標頭檔案裡的函式,利用其原理自己編寫一個可以隨意改變型別的函式。這是int的。include int pow int x,int y void ...