Re: [問題] 關於指標函數
※ 引述《vm6jp6rmp4 (Jun)》之銘言:
: 想請教一下各位大大,最近在看一本C++的書,對於指標函數有點不是很了解,
: 下面的程式中char *left(const char * str, int n) 這函數是代表回傳一個指標,
: P是NEW出來的東西,然後main()函數中char *ps = left(sample, 4)這行可以解釋
: 成 left=p指向的內容字串 ,然後ps再指向left=p指向的內容字串嗎?對於指標函數
: 似乎又把我搞混了~~~如果有哪位大大能詳細解釋那是更好了!
: #include<iostream>
: using namespace std;
: const int ArSize = 80;
參考網址
http://www.oopweb.com/CPP/Documents/FunctionPointers/Volume/CCPP/FPT/em_fpt.html
http://tinyurl.com/us64s 上面的縮址
declare your funtion
use ; 表示宣告
char* left(const char * str, int n = 1);
ReturnType FunctionName(ArgumentList);
因此, 這並不是一個 function pointer.
如果真要宣告成 funtion pointer
char (*left)(const char * str, int n = 1);
ReturnType (*FunctionName)(ArgumentList);
這個例子是
宣告
回傳形態為 char
函數名稱為 left
參數串 為 const char *str, int n
n 預設值為 1
的一個 function pointer
: int main(void)
: {
: char sample[ArSize];
: cout << "Enter a string:\n";
: cin.get(sample,ArSize);
: char *ps = left(sample, 4);
: cout << ps << "\n";
: delete [] ps;
: ps = left(sample);
: cout << ps << "\n";
: system("PAUSE");
: return 0;
: }
implement your funtion
use {} 表示實作
char* left(const char * str, int n)
ReturnType FunctionName(ArgumentList)
{
: int i;
: if(n < 0)
: n = 0;
: char * p = new char[n+1];
: for (i = 0; i < n && str[i]; i++)
: p[i] = str[i];
: while (i <= n)
: p[i++] = '\0';
: return p;
}
--
渴望飛翔在自由的風中,
期望逃離這拘束的現實,
一切都讓他隨著風而去,
獨自躲在黑暗的空氣中,
舔舐被狠狠撕裂的傷口。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.29.8
討論串 (同標題文章)