當前位置:首頁 » 編程語言 » c語言自定義函數傳數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言自定義函數傳數

發布時間: 2023-04-16 09:52:08

c語言:創建一個函數,通過實參向形參傳遞值方式實現數值傳遞

你這個問題很奇怪,首先一維數組存不搏畢了好幾鉛棚個單詞,除非用二維數組,或是指針。

但是這個字元串要想實現值傳遞的話很是別扭的,用指針還行.而且這個循環可以放在主函數中的。

main()
{
void outPut(char a[]);
char words[5][4]={"how","do"槐銀則,"you","do","!"};
int i=0;
for(i=0;i<5;i++)
outPut(words[i]);
}

void outPut(char a[])
{
printf("%5s",a);

}

⑵ c++,如何在自定義函數如int myfun(void)中傳出傳出一個數組,例如d[3]={1,2,3}

通常是主調函彎滲數將數組首地址作為參數傳遞給被調函數,被調函數將結果存放在數埋如脊組中即可。
C語言不支持將整個數組返回,只能返回數橡尺組首地址。

⑶ C語言自定義函數怎麼傳參,一次性把數組的數據全部傳入

數組參數屬於指針參數.

指針參數即時傳址參數(或叫引用參數), 如果想在函數中修改參數的值, 這是唯一的途徑.

如果把數組當作參數, 不管你願攔純意與否, 它就是指針, 指向第一個值的指針.
1. 數組參數就是指向第一個元素的指針: #include <stdio.h>

void getArr(int p[], int si);

int main(void)
{
int ns[] = {1,2,3,4,5};

getArr(ns, sizeof(ns)/sizeof(ns[0]));

getchar();
return 0;
}

void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}

2. 乾脆直接聲明為指針: #include <stdio.h>

void getArr(int *p, int si);

int main(void)
{
int ns[] = {1,2,3,4,5};

getArr(ns, sizeof(ns)/sizeof(ns[0]));

getchar();
return 0;
}

void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}

3. 即簡團咐使你在形參中指定維數也不起作用: #include <stdio.h>

void getArr(int p[2], int si);

int main(void)
{
int ns[] = {1,2,3,4,5};

getArr(ns, sizeof(ns)/sizeof(ns[0]));

getchar();
return 0;
}

void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}

4. 既然是指針, 其值就有被修改的可能: #include <stdio.h>

void getArr(int p[], int si);

int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;

getArr(ns, sizeof(ns)/sizeof(ns[0]));

for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}

getchar();
return 0;
}

void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}

5. 如果是字元數組, 它自己能判斷數組尾界: #include <stdio.h>

void getArr(char p[]);

int main(void)
{
char ns[] = "ABCDEFG";

getArr(ns);

getchar();
return 0;
}

void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n"或老, p[i], p[i]);
}
}

⑷ c語言函數的值傳遞

p函數就是個冒泡遞減排序功能。標准函數頭寫法應該是void p(int a[])而不是void p(int a[5]),即使寫成void p(int a[5]),編譯器也山歷是按void p(int a[])解釋而不按void p(int a[5])解釋,而且這里a[]的意思就粗唯緩是定義a是int *型指針。函數p中並沒有改變a,改變的是a指岩模向的目標a[0]~a[4]。所以不知你問的具體是啥意思……

⑸ C語言問題:自定義函數參數傳遞pow(n,n--),例如n=4,為什麼傳入的值是3,4

你運行一下以下代碼,返啟不可嘩擾能啊!

#include<stdio.h>
voidfun(亂世旦intx,inty)
{
printf("x=%dy=%d ",x,y);
}
voidmain()
{
intn=4;
fun(n,n--);
}
輸出x=4y=4

⑹ 【C語言】實現一個函數,傳遞一個整數參數

代碼如下,培敗望採納:

#include<stdio.h>
intfunc(int配拍顫n)
{
inti,result=0;
while(n!=0)
{
i=n%10;
result=result*10+i;
n/=10;
}
returnresult;
}
intmain()
{
inti,n,result=0;
printf("請輸入任意一個整數: "賀掘);
scanf("%d",&n);
result=func(n);
printf("按位翻轉的結果為:%d",result);
return0;
}

⑺ c語言自定義函數怎麼帶參數

舉個栗子,比如計算a+b的值的函數

#include<stdio.h>
intplus(inta,intb)
{
intc=a+b;//2.此處定義的c無法被主函數直接調用,因為c為局部變數
returnc;//3.要返回計算結果,只能用return語句
}
intmain()
{
inti=5,j=7;
intans=plus(i,j);//1.該過程中,首先將i,j作為參數(與上面的plus函數說明(m,n)一一對應)傳遞給plus函數。
printf("%d",ans);
}

⑻ C語言自定義函數怎麼傳參,是一次性把數組的數據全部傳入嗎

1、因為數渣睜液組在內存中是一塊連續的內存,只要將該數組的首地址傳進去,當然就可以訪問整個數組了。值得注意的是,由於只傳了首地址,函數不知道數組的維數,所以還得把數組的維數傳進去,那就可以完全操作早鍵該數組了。x0dx0ax0dx0a2、例:有一個函數聲明:void fun( int aa[],int size );或如物者void fun( int *pa,int size );x0dx0a以上兩種聲明都一樣。x0dx0a調用上訴函數時:假設有 int ab[10];x0dx0afun( ab,10 )就可以了。

⑼ C語言怎麼向自定義函數中傳入一個數組,處理完再返回新的數組

看你的代碼。

你問題並不在數組傳入。你函數mymd5接收password數組,mymd5的password數組變數和外部函數的password地址相同,所以改變其中外部函數的數組也改變。

但你mymd5返回的數組decrypt,是局部變數,當mymd5調用結束,這個數組的內存空間就釋放了。你接收了也是NULL。所以要用malloc或calloc申請動態內存。這樣不會被釋放。

我寫了簡單案例,你參考:

#include<stdio.h>
#include<malloc.h>
#include<string.h>

char*md(chara[]);//錯誤的數組返回
char*md2(chara[]);//正確的數組返回
intmain()
{
charpassword[10]="123456789",*decrypt=NULL;
decrypt=md(password);
printf("外部函數傳遞數組到子函數,子函數改變,外部函數也改變,password=%s ",password);
printf("錯誤返回方式:局部變數,外部函數接收失敗,被自動釋放,decrypt=%s ",decrypt);
decrypt=md2(password);
printf("正確返回方式:動態申請,外部函數接收成功,不會被自動釋放,decrypt=%s ",decrypt);
return0;
}
char*md(charpassword[])
{
chardecrypt[10]="*********";
password[0]=0,strcpy(password,"abcdefghi");
returndecrypt;
}
char*md2(charpassword[])
{
char*decrypt=(char*)malloc(sizeof(char)*10);
if(!decrypt)
returnNULL;
strcpy(decrypt,"*********");
password[0]=0,strcpy(password,"abcdefghi");
returndecrypt;
}

⑽ C語言,求解! 編寫用戶自定義函數,傳入一個十進制整數,傳回其二進製表示。

#include<stdio.h>
char*dec2bin(char森陸*x,intn)
{inti,j;
charc;
for(i=-1;n;n/=2)
x[++i]=n%2+'此頃頃0';
x[i+1]=0;乎派
for(j=0;j<i;)
{c=x[j];x[j++]=x[i];x[i--]=c;}
return&x[0];
}
intmain()
{chars[33];
printf("%s ",dec2bin(s,35));
return0;
}