當前位置:首頁 » 編程語言 » c語言函數字元串參數
擴展閱讀
如何找回wifi密碼 2022-05-24 16:24:58
c語言打出10行的菱形 2022-05-24 16:23:01

c語言函數字元串參數

發布時間: 2022-01-21 12:54:26

c語言中雙引號引起來的字元串可以作為函數參數嗎

可以的,就像以下代碼:

voidshow(char*str)
{
printf("%s ",str);
}
你在調用的時候,一般是傳一個變數進去,同樣也可以傳一個字元串常量進去,
例如show("HelloWorld");
為什麼可以呢?首先要想,什麼是變數,變數代表著值不確定,是動態的。
而當一個變數有值的時候,除非它發生改變,否則它就是"確定"的。
既然一個不確定的東西能作為參數傳遞過去,那麼一個確定的字元串有何理由不能傳遞呢?

㈡ C語言字元串指針作函數參數

實參數組p中的內容沒有改變
因為fun函數僅僅是改變了參數s指針的指向,使其指向了局部變數數組a而已

㈢ C語言程序設計:設計一函數,函數的形參為一字元串,判斷該字元串是否為字元

代碼和運行情況如圖:

㈣ c語言中 怎樣把字元串作為函數變數

你是說函數的參數吧?
定義參數的類型為 char *p; 或者 char p[];
即字元型指針或字元型數組

㈤ c語言如何傳遞字元串

c語言函數中傳遞字元串,可以分為兩種情況,一種是將字元串作為參數,一種是將字元串作為返回值 ,當使用字元串作為返回值時,切記不要傳遞局部字元數組。下面是一個示例代碼:


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
voidf(char*str){//字元串作參數
printf(str);
}
char*r(){//字元串作返回值
//使用動態分配內存,不要使用局部變數比如
//charbuf[80];因為局部變數在函數結束時,棧區變數已被回收
char*str=(char*)malloc(256*sizeof(char));
if(str==0){printf("can'tallocmem ");return0;}
elsememset(str,0x00,sizeof(char)*256);
returnstr;//
}
intmain()
{
char*pstr=r();
if(pstr!=0)strcpy(pstr,"helloworld ");
f(pstr);
free(pstr);
return0;
}

㈥ c語言中 如果給函數形參傳遞字元串

單個字元用單引號引起來,比如'\0'你都用了雙引號,改過來就好了

㈦ c語言字元串指針作函數參數。

fun函數裡面指針s=a傳遞的是函數地址,s在函數入口承接p指針值,之後接a,不改變p指針地址下的值!

㈧ c語言:字元串做為函數參數傳遞

1、值傳遞

void swap(int x,int y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

}

執行後,並不會交換。

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 b=%d ", a, b);

}

執行後,發生交換。

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 b=%d ", a, b);

}

執行後,發生交換。

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

首先,明確數組型變數名本身只是該數組所佔存儲空間的首地址:

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

printf("%d", *p);

典型的數組做參數。

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

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

}void main()

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

fun(str);

}

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

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

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

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

{

printf("%c", *p);

p++;

}

}void main()

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

fun(str);

}

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

(8)c語言函數字元串參數擴展閱讀:

調用帶參數的函數:

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

這些參數可以在函數中使用。

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

myFunction(argument1,argument2)。

當聲明函數時,請把參數作為變數來聲明:

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

變數和參數必須以一致的順序出現。第一個變數就是第一個被傳遞的參數的給定的值,以此類推。

按值傳遞參數:

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

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

按地址傳遞參數:

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

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

按數組傳遞參數:

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

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

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

參考資料來源:網路-參數傳遞

參考資料來源:網路-字元串



㈨ C語言 函數的形參怎麼對字元串引用

按你的意思猜,得把printf("%c",B);改成printf("%c",*B);才對。

㈩ C語言函數只讀字元串參數問題

c語言編譯器默認是不讓返回指針類型的,但是返回並沒有錯,有些情況下會正常執行,當然編譯無論是否可以正常執行都會編譯。這是因為指針變數在函數中,一旦函數結束,這個指針指向的地址就會作廢,suoyi 沒意義,故編譯器默認返回時會提醒。一般使用加上static使其不銷毀。