欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言字符串數(shù)組函數(shù)參數(shù),c語言字符串做函數(shù)參數(shù)

C語言中如何將二維字符數(shù)組作為函數(shù)參數(shù)引用傳遞

不可能達到目的。因為C語言中沒有引用這類型,C++才有。另,C/C++都不支持傳遞數(shù)組,只能傳遞數(shù)組的首元素或行指針,所以即使是C++,也只能傳遞數(shù)組指針的引用,而不可能傳遞數(shù)組的引用,因為數(shù)組沒有引用。

成都創(chuàng)新互聯(lián)服務項目包括安國網(wǎng)站建設、安國網(wǎng)站制作、安國網(wǎng)頁制作以及安國網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,安國網(wǎng)站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到安國省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

c語言,字符數(shù)組函數(shù)

#include?stdio.h

/*比較兩個字符串*/

/*src、dst相等?return?1*/

/*src比dst短?return?-2*/

/*src比dst長?return?2*/

/*src、dst長度一致但不相等?return?-1*/

int?stringCmp?(char?*src,?char?*dst)?{??

if?(strlen?(src)??strlen?(dst))

return?-2;

else?if?(strlen?(src)??strlen?(dst))

return?2;

else?{

while?(*src??*dst)?{

if?(*src?!=?*dst)

return?-1;

src++;

dst++;

}

return?1;

}

}

/*合并兩個字符串*/

void?mergeString(char*?str1,?char*?str2,?char*?merge)?{

while?(*merge++?=?*str1++);?/*復制str1并將指針移動到字符串的末尾的下一個位置*/

merge--;?/*退到字符串的末尾*/

while?(*merge++?=?*str2++);?/*從末尾(\0)的位置開始將str2拷貝進來*/

*merge?=?'\0';

}

int?main(void)?{

char?*str1_1="hel",*str1_2="lo",?*merge1;

char?*str2_1="ness",*str2_2="happy",?*merge2;

char?*str3_1="hi",*str3_2="hi",?*merge3;

char?*str4_1="hello",*str4_2="world",?*merge4;

puts?("第1組字符串:");

puts?(str1_1);

puts?(str1_2);

if?(stringCmp?(str1_1,?str1_2)?==?1)

puts?(str1_1);

else?if?(stringCmp?(str1_1,?str1_2)?==?-2)?{

mergeString?(str1_2,?str1_1,?merge1);

puts?(merge1);

}

else?if?(stringCmp?(str1_1,?str1_2)?==?2?||?stringCmp?(str1_1,?str1_2)?==?-1)?{

mergeString?(str1_1,?str1_2,?merge1);

puts?(merge1);

}

putchar?('\n');

puts?("======================================================");

putchar?('\n');

puts?("第2組字符串:");

puts?(str2_1);

puts?(str2_2);

if?(stringCmp?(str2_1,?str2_2)?==?1)

puts?(str2_1);

else?if?(stringCmp?(str2_1,?str2_2)?==?-2)?{

mergeString?(str2_2,?str2_1,?merge2);

puts?(merge2);

}

else?if?(stringCmp?(str2_1,?str2_2)?==?2?||?stringCmp?(str2_1,?str2_2)?==?-1)?{

mergeString?(str2_1,?str2_2,?merge2);

puts?(merge2);

}

putchar?('\n');

puts?("======================================================");

putchar?('\n');

puts?("第3組字符串:");

puts?(str3_1);

puts?(str3_2);

if?(stringCmp?(str3_1,?str3_2)?==?1)

puts?(str3_1);

else?if?(stringCmp?(str3_1,?str3_2)?==?-2)?{

mergeString?(str3_2,?str3_1,?merge3);

puts?(merge3);

}

else?if?(stringCmp?(str3_1,?str3_2)?==?2?||?stringCmp?(str3_1,?str3_2)?==?-1)?{

mergeString?(str3_1,?str3_2,?merge3);

puts?(merge3);

}

putchar?('\n');

puts?("======================================================");

putchar?('\n');

puts?("第4組字符串:");

puts?(str4_1);

puts?(str4_2);

if?(stringCmp?(str4_1,?str4_2)?==?1)

puts?(str4_1);

else?if?(stringCmp?(str4_1,?str4_2)?==?-2)?{

mergeString?(str4_2,?str4_1,?merge4);

puts?(merge4);

}

else?if?(stringCmp?(str4_1,?str4_2)?==?2?||?stringCmp?(str4_1,?str4_2)?==?-1)?{

mergeString?(str4_1,?str4_2,?merge4);

puts?(merge4);

}

putchar?('\n');

puts?("======================================================");

putchar?('\n');

getch?();?/*屏幕暫留*/

return?0;

}

運行結果

c語言:字符串做為函數(shù)參數(shù)傳遞

1、值傳遞

void swap(int x,int y)

{ ? ?int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

}

執(zhí)行后,并不會交換。

2、引用傳遞

void swap(int x,int y)

{ ? ?int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

printf("a=%d\nb=%d\n", a, b);

}

執(zhí)行后,發(fā)生交換。

3、指針傳遞

void swap(int *x,int *y)

{ ? ?int temp = *x; ? ?*x = *y; ? ?*y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

printf("a=%d\nb=%d\n", a, b);

}

執(zhí)行后,發(fā)生交換。

參數(shù)傳遞只有上面三種,但是如果加上數(shù)組,就會產生幾種新形式。

首先,明確數(shù)組型變量名本身只是該數(shù)組所占存儲空間的首地址:

int a[3] = { 1, 2, 3 }; ? ?int *p = a; //等價于下行 ? ?//int *p = a[0];

printf("%d", *p);?

典型的數(shù)組做參數(shù)。

void fun(char s[]){ ? ?for (int i = 0; s[i] != '\0'; i++)

printf("%c", s[i]);

}void main()

{ ? ?char str[] = "Hello World!";

fun(str);

}

函數(shù)調用時,這里系統(tǒng)不會為形參分配數(shù)組存儲空間,而是僅僅分配一個存放數(shù)組地址(第一個元素地址)的存儲空間,此后,將實參數(shù)組的首地址傳遞給形參變量。

其實本質與下相同,只不過還是數(shù)組形式的(數(shù)組名代替指針)。

既然數(shù)組型變量名本身只是該數(shù)組所占存儲空間的首地址,我們當然可以用指針做形參來接收數(shù)組實參。

void fun(char *p){ ? ?while (*p)

{

printf("%c", *p);

p++;

}?

}void main()

{ ? ?char str[] = "Hello World!";

fun(str);

}

不過問題是如果這樣,無法把握數(shù)組結束(除非知道數(shù)組長度)。而對于字符數(shù)組(上例),由于字符串末尾有結束標志'\0'(ascii碼正好是0),所以就很容易利用指針來判斷字符串是否結束。

擴展資料:

調用帶參數(shù)的函數(shù):

在調用函數(shù)時,可以向其傳遞值,這些值被稱為參數(shù)。

這些參數(shù)可以在函數(shù)中使用。

可以發(fā)送任意多的參數(shù),由逗號 (,) 分隔:

myFunction(argument1,argument2)。

當聲明函數(shù)時,請把參數(shù)作為變量來聲明:

function myFunction(var1,var2){這里是要執(zhí)行的代碼}。

變量和參數(shù)必須以一致的順序出現(xiàn)。第一個變量就是第一個被傳遞的參數(shù)的給定的值,以此類推。

按值傳遞參數(shù):

按值傳遞參數(shù)時,是將實參變量的值復制一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變量本身,即實參變量保持調用前的值不變。

按值傳遞參數(shù)時,需要在參數(shù)名前加"ByVal"關鍵字。

按地址傳遞參數(shù):

按地址傳遞參數(shù)時,把實參變量的地址傳送給被調用過程,形參和實參共用內存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。

如果實參是一個常數(shù)或表達式,Visual Basic 6.0會按"傳值"方式來處理,按地址傳遞不需要"ByVal"關鍵字。

按數(shù)組傳遞參數(shù):

在VB6.0中,允許使用數(shù)組作為實參傳遞到子過程的形參中,數(shù)組傳遞必須采用地址傳遞的方式來傳遞參數(shù)。數(shù)組參數(shù)在傳遞時應注意以下兩個方面:

① 在實參和形參列表中只寫數(shù)組名,忽略維數(shù)的定義,但圓括號不能省,當數(shù)組作為參數(shù)傳遞時,系統(tǒng)將實參數(shù)組的起始地址傳給過程,使形參數(shù)組也具有與實參數(shù)組相同的起始地址,若參數(shù)是多維數(shù)組,每維以逗號分隔。

② 被調過程可分別通過Lbound和Ubound函數(shù)確定實參數(shù)組的下界和上界。

參考資料來源:百度百科-參數(shù)傳遞

參考資料來源:百度百科-字符串

文章名稱:c語言字符串數(shù)組函數(shù)參數(shù),c語言字符串做函數(shù)參數(shù)
本文網(wǎng)址:http://chinadenli.net/article45/dsigdei.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作服務器托管網(wǎng)站改版品牌網(wǎng)站設計企業(yè)建站網(wǎng)站內鏈

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化