C語言中,數組名作為參數傳遞給函數時,退化為指針,sizeof對指針操作結果應該是4。
例子如下:
#include<iostream>
using namespace std;
void Swap_arr(char* charArr){
int len = sizeof(charArr);
cout << "len =" << len << endl; //輸出len =4
}
int main(){
char charArr[] = "abcdefgh";
Swap_arr(charArr);
return 1;
}
所以函數中如果需要數組的大小時,需要我們一個參數傳數組名,另一個傳數組大小。如下所示:
#include<iostream>
using namespace std;
void test_arr(char* charArr, int len){
cout << "len =" << len << endl; //輸出:len =8
}
int main(){
char charArr[] = "abcdefgh";
int len = sizeof(charArr) / sizeof(charArr[0]) - 1;
test_arr(charArr,len);
return 1;
}
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: