English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

1.這個是傳址的陣列函式,可以正常編譯,也會改變主程式裡面原本的數值..
#include
#include
int f(char[]);
int main() {
char name[6]="ABCDE";
f(name);
printf("%s\n",name);
system("pause");
}
int f(char *name){
*(name+1)='H';
return 0;
}


2.
這是我用指標運算元直接指定給他數值 卻不能出現"invalid conversion from `const char*' to `char' " 是因為指標類型要儲存連續性的東西都要用到malloc嗎?
還有函式宣告int or void 為什麼int 要傳回值呢??
有些函式傳回的值是需要在主程式運算才需要傳回那個值嗎?
最後是傳回主程式嗎?

#include
#include
int f(char[]);
int main() {
char name[6]="ABCDE";
f(name);
printf("%s\n",name);
system("pause");
}
int f(char *name){
*(name)="HOT";
return 0;
}

2007-03-24 03:09:40 · 2 個解答 · 發問者 finalholy 1 in 電腦與網際網路 程式設計

您好:
我只知道strcat;
另外,printf("char \\'%c\\' location: %d\\n",CH,(int)(pCH-string 1));
這個我看不懂耶~.~
(int)(pCH-string+1)是什麼呢?

2007-03-24 14:42:15 · update #1

好像有一個叫strcpy的吧 指定東西給前面的位址

2007-03-24 14:42:58 · update #2

請問喵喵咪,如果我要指定HOT要怎麼做呢?

2007-04-01 23:28:11 · update #3

感謝綿羊和貓咪的幫助!!

2007-04-06 08:01:58 · update #4

2 個解答



//Power by Visual Studio 2005

#include

#include

#include

int main(int argc, char* argv[]){

//==========START==========//

char *pCH,*string="THIS IS A BOOK",CH='B';

pCH=strchr(string,CH);

printf("char \\'%c\\' location: %d\\n",CH,(int)(pCH-string 1));

//==========END==========//

system("PAUSE");

return 0;

}




2007-03-24 09:34:23 補充:
要修改的地方:

(int)(pCH-string+1)

2007-03-24 19:35:24 補充:
指標是記錄變數的位址

strchr 是傳回第一個 CH 字元在 string 的位置

pCH 接收 strchr 傳回的值

假設傳回的值是 0xAABA

string 記錄字串的起始位址,假設是 0xAAAA

相減後,是 0xA,加一,就是 0xB,強制轉換為整數,就是 11,這個數就代表 CH 在這個字串的位置是第 11 個。

2007-03-24 19:37:08 補充:
strcpy

cpy 就是 copy 複製

複製字串到另一個陣列或記憶體空間

2007-03-24 05:33:18 · answer #1 · answered by Big_John-tw 7 · 0 0

感覺回答的人. 答非所問.@@
int f(char *name){
*(name)="HOT"; // << *(name) 是 char 型態,
// "HOT" compiler 會產生一個 "HOT" 字串. 並記算出他的address, 他的型別是 const char* . 兩者型別不同. 當然不能被設定. 到*(name)
return 0;
}

2007-03-26 13:30:56 補充:
function 宣告時. 前面加入void 表示不回傳任何值
其他的型態, 表示要回傳一個值
如int 表示會回傳一個 int 的值

至於回傳給呼叫者. 呼叫者要不要接收他. 保存她. 由呼叫者決定.

2007-04-02 09:11:14 補充:
其實你知道怎麼做的. 就是用strcpy
void f(char *name){
strcpy(name,"HOT");
}

或是自己一個一個設定字元
void f(char *name)
{
name[0]='H';
name[1]='O';
name[2]='T';
name[3]=0; // C 的字串結束符號為 0
}

2007-03-26 09:27:43 · answer #2 · answered by SiYu 5 · 0 0

fedest.com, questions and answers