當前位置:首頁 » 編程語言 » c語言函數指針參數

c語言函數指針參數

發布時間: 2022-09-26 18:17:13

『壹』 c語言中指針作為函數參數的問題。

O(∩_∩)O哈哈~。在函數聲明和定義時Fun(int p1,int p2)是不是表示它的參數是兩個int型的整數。Fun(int* p1,int* p2)則使表示它的參數是兩個指針類型的。定義和聲明時的變數只是代替符,其它的運算符號與類型符號加起來才是參數類型。你如果覺得不好理解,那麼在寫的時候就把int 和*放在一起(int*),這就是參數類型。

『貳』 C語言用指針作函數參數

選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。

『叄』 C語言的指針作函數參數

改成下面代碼看看:

#include<stdio.h>

voidabc(int*i,int*j)

{

intm;

m=*i;//指針變數的值也就是地址不能賦值給一般變數
*i=*j;//*i,*j才是指針變數指向的變數的值
*j=m;

}

voidmain()

{

inta,b;

int*pa=&a,*pb=&b;

printf("請輸入a,b的值:");

scanf("%d,%d",&a,&b);

abc(pa,pb);//

printf("a=%d b=%d ",a,b);

}

『肆』 C語言----指針參數的函數

確實很急,函數聲明 中的函數名都打錯了~~返回值也沒打。
函數傳遞是值傳遞,傳遞指針的值 能改變 調用函數的值是因為 他們的地址是 一樣的。而實質上也是值傳遞,進來的是指針指向的地址。
而你mop函數交換的是 指針 也就是 地址 值 當然不影響調用函數。
主函數中
p=m;m=n;n=p;

交換是因為這幾個指針一直在作用域中,沒有釋放。交換了指針中存放的地址,就是指向的內存地址的改變。運行下下面二的程序 能幫你理解。
#include<stdio.h>
int main()
{
int a=604,b=750,c;
int *m,*n,*p;
m=&a;
n=&b;
printf("指針沒有交換前的地址m n %d %d\n",m,n);
p=m;m=n;n=p;
printf("指針交換後的地址m n %d %d\n",m,n);
printf("%d%d\n",*m,*n);
printf("值沒有交換前的地址m n %d %d\n",m,n);
c=*m;*m=*n;*n=c;
printf("值交換後的地址m n %d %d\n",m,n);
printf("%d%d\n",*m,*n);
return 0;
}
===========================
#include<stdio.h>
int main()
{
void nop(int *x,int *y);
void mop(int *x,int *y);
int a=604,b=750;
int *m,*n;
m=&a;
n=&b;
printf("主函數中指針交換前的地址\tm n %d %d\n",m,n);
mop(m,n);
printf("主函數中指針交換後的地址\tm n %d %d\n",m,n);
printf("%d%d\n",*m,*n);
nop(m,n);
printf("%d%d\n",*m,*n);
return 0;
}
void mop(int *x,int *y)
{
printf("指針沒有交換前的地址\t\tm n %d %d\n",x,y);
int *z;
{z=x;x=y;y=z;}
printf("指針交換後的地址\t\tm n %d %d\n",x,y);
}
void nop(int *x,int *y)
{int a;
a=*x;*x=*y;*y=a;
}

『伍』 C語言指針作為函數參數

#include<stdio.h>
int*fmax(int*,int*);/*函數的聲明和下面的定義參數類型不一致,應該改成指針類型*/
voidmain()
{
intx,y;int*c,*d;
int*pmax;
scanf("%d%d",&x,&y);
c=&x;
d=&y;
pmax=fmax(c,d);
printf("max=%d ",*pmax);
printf("max=%d ",*pmax);
}
int*fmax(int*a,int*b)
{
int*p;
p=*a>*b?a:b;
returnp;
}

『陸』 c語言函數指針做函數參數問題

兩個比較函數的名做指針分別做參數代入排序,
這樣,一個排序由小到大,後一個由大到小,如此而已。
很簡單的。
是不是編譯有問題?

『柒』 c語言中函數指針作為參數與函數的嵌套

您好,針對這個問題
Status
InOrderTraverse(BiTree
T
,Status(*Visit)(TElemType
e))函數中第2個參數是一個指向函數的指針,這樣做的目的是為了程序的靈活性。試想如果給你一個整型數100,要求分別按照10進行、16進制輸出,你可以寫一個輸出10進制函數與輸出16進制函數,當你有需要輸出16進制時,只需要將16進制函數地址傳給Visit就行,而不需要改變InOrderTraverse函數,這種做法靈活,也符合軟體工程編程思想。
另外,InitStack(S);
就是函數調用,這種就在InOrderTraverse已經寫死了,如果有幾種初始化情況的話,就得在InOrderTraverse增加判斷條件來加以區分,這樣增加了代碼量。
希望我的回答對您幫助!

『捌』 C語言用指針作函數參數

選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。

『玖』 ★C語言 指針作函數參數

void fun(char *c,int d)
使用指針作為參數時,指針變數c指向了變數b,當c變化時,b也會變化。這里*c=*c+1,是*c由a變為b。
第二個參數d變化時,a並不會變化。
%e是一種轉換說明符號,表示浮點數,並且採用e計數法。
比如2.12e2

『拾』 c語言指針的指針做函數參數

定義sort函數時使用的參數是指針,需要注意的是這個指針是指向數組的,數組的名稱其實就是一個指針,所以p可以做sort的參數

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:166
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:737
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:150
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:399
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:545
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:632
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:367