當前位置:首頁 » 網頁前端 » web函數以字元串為參數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web函數以字元串為參數

發布時間: 2022-09-08 09:44:10

『壹』 請教,如何把字元串常量當作函數參數傳入,謝

函數的形參進入函數時,進入的只是形參的拷貝值,並不是本身。函數是在棧里開辟內存,棧是系統自己的維護的所以不需要程序員自己回收當函數結束時,這片內存被釋放。

『貳』 存放字元串數組名作為函數參數,是否要另外增加一個整數作為函數參數,以表明字元串有效字元個數,為什麼

下面是C/C++語言中的數組使用。
數組名作為函數參數的時候會「弱化」為指針,即使用的時候實際傳遞是的指針類型的參數。
我們知道指針類型代表著地址,它並沒有指明數組元素的個數,因此編寫這類函數時通常加上一個整數類型的參數,以指明數組中元素。

涉及到具體的應用,如字元串數組,也可以不用這樣的整數類型參數,這樣的數組可以用strlen()函數得到字元串長度(有效字元個數)。
然而對於一般的數組,是沒有這樣的函數可用的。

『叄』 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),所以就很容易利用指針來判斷字元串是否結束。

(3)web函數以字元串為參數擴展閱讀:

調用帶參數的函數:

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

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

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

myFunction(argument1,argument2)。

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

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

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

按值傳遞參數:

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

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

按地址傳遞參數:

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

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

按數組傳遞參數:

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

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

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

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

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



『肆』 字元串數組指針作為函數的參數,哪裡出錯了

大概看了一下。你的代碼有這樣的邏輯錯誤:str_count的值好像總是比輸入的字元串個數大,所以
for(int i=0;i<str_count;++i){//
printf("%s",*(pS+i));
}
這里在i大於實際字元串個數時會產生運行時錯誤,不可能運行到pstr=hb_zifuchuan(pS);這里成功調用hb_zifuchuan。你可以這樣驗證:輸入3個字元串,把主函數和自定義函數中的for循環控制從i<str_count改成i<3,應該能在自定義函數中輸出三個字元串……本人看法是這兩個控制地方不能用str_count控制而應該用實際輸入的字元串個數控制。

『伍』 如何讓字元串轉換成參數串

多個字元串轉成一個字元串,可以看出字元串拼接,使用字元串拼接strcat()函數來完成。
工具:DEV C++
char strcat (char *dest, const char *src );
strcat()會將參數src字元串拷貝到參數dest所指的字元串尾。
參考代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include<stdio.h>
#include<string.h>
int main()
{
//定義3個字元串
char a[60]="中國";
char b[20]="歡迎";
char c[20]= "您!" ;

strcat(a,b);//把b字元串拼接到a的後面,a字元串變成「中國歡迎」
strcat(a,c); //把c字元串拼接到a的後面,a字元串變成「中國歡迎您!」

printf("%s\n",a);//輸出拼接後的a

return 0;
}
/*
運行結果:
中國歡迎您!
*/

注意:
1.使用strcat()函數需要引用「string.h」頭文件。
2.strcat(char *dest, const char *src)第一個參數dest要有足夠的空間來容納要拷貝的字元串。

『陸』 javascript函數的參數為復雜的字元串

第一個問題:為什麼要寫成字元串連接的形式。
如果elementID + "'," + final_x + "," + final_y + "," + interval這4個參數不是全局變數,你這樣寫setTimeout("moveElement(elementID,final_x,final_y,interval)",interval);那麼會 報錯,因為找不到這樣的全局變數。而上面那樣拼接的話是找之前的方法內的變數就可以了。
第二個問題:『elementID』 為什不加么要加單引號,其實就是指定他是個字元串而已。
如果elementID真是個字元串,不是數字,那麼你直接寫不加引號的話會報錯,這個是javascript的語法。如果是數字則沒什麼影響。
單引號和雙引號都是javascript指定字元串的符號。

『柒』 字元串作為參數傳入函數的錯誤

一、CBook類沒有默認構造函數,應把有參構造函數刪除或者再寫一個無參構造函數。
二、類數據成員應改為字元串:char m_cName[100];
三、SetName函數中參數改為:char *name。語句改為:
strcpy(m_cName,name);

『捌』 c語言中 怎樣把字元串作為函數變數

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

『玖』 編寫函數求一個字元串的串長,字元串作為參數傳入,函數的返回值為串長

#include <iostream> using namespace std; int string_length(char * pointer) //函數,求字元串的長度 { int length = 0; while(*pointer != '\0')//如果沒到字元串末 { length ++; pointer ++; } return length; } int main() { char a[256]; cin >> a; int len = string_length(a); cout << "length = " << len << endl; return 0; }

『拾』 寫一個遞歸函數,它以字元串為參數並且返回這個字元串的倒序。該函數的原型是 char *Reverse(char *str)

這並沒有使用指針

無效的主要()
{
無效strReverse(的char [],int)的;
字元STR [] = 「編輯此字元串來扭轉」;
詮釋萊恩??= 0;
(STR [LEN] ='\ 0')
{LEN + +;}
strReverse(STR,LEN);

的getch();
}

無效strReverse(CHAR STR [],INT)
{ />(STR [0] ='\ 0'&& N!= 0)
{
printf的(「%c」的,(STR [N-1]));
strReverse(STR,N-1);
}

}

基本關閉,但第一看看如何定義的字元數組對象
第一次分析時,系統將字元ABCD加\ 0,然後分配給字元數組
[1]字元海峽[] =「ABCD」,「ABCD」五元素,最後是\ 0;
[2]一個字元STR [] = {'A??','B','C','D'};有四個元素,並最終D
> 2。增加一個空字元判斷遞歸

「stdio.h中」
無效的主要()
{
是無效strReverse(為const char * PSTR);
字元*海峽=「編輯字元串扭轉」;
strReverse(STR);
的getch();
}

無效strReverse(常量的char * PSTR)
{字元* pstr2 = PSTR
(* pstr2!='\ 0')
{靜態int n = 1時,
如果(N = 1)
{INT I = strlen的(PSTR)-1,K;
pstr2 =(char *)的的malloc(strlen的(PSTR)+1);
(k = 0;我> = 0; I - ,K + +)/ *循環以相反的順序* /
{*(pstr2 + K)= *(PSTR + I);}
*(pstr2 + K)= '\ 0'; / *添加的最後一個字元\ 0 * /
N + +;
}
輸出(「%c」的,* pstr2);
/> strReverse(pstr2 +1);}
}

[2]沒有遞歸
的#include「stdio.h中」
無效的主要() /> {:無效strReverse(字元* PSTR);
字元*海峽=「編輯字元串扭轉」;
strReverse(STR);
的getch();
/>}

無效strReverse(CHAR * PSTR)
{(pstr! = 0)/ *判斷輸入的字元不能為空* ??/
{INT I = strlen的(PSTR)-1; / *計算字元串的長度,不包括\ 0 * /
整數K;
的char * pstr2;的
pstr2 =(char *)的的malloc(strlen的( PSTR)+1); / *申請一個空間的大小將超過1比原來的字元串\ 0 * /
為(k = 0; I> = 0; I - ,和k + +)/ *循環在相反的順序* /
{*(pstr2 + K)= *(PSTR + I);}
*(pstr2 + K)='\ 0'; / *添加的最後一個字元\ 0 * /
printf的(「%」,pstr2);
}
其他輸出(「錯誤\ n」);

}