void test(char *a)
{
cout << sizeof(a) << endl;// 4
cout << strlen(a) << endl;// 5
}
int main()
{
char a[] = "12345";
cout << sizeof(a) << endl; // 6
cout << strlen(a) << endl; // 5
return 0;
}
問題:
函數裡面的*a(或者是a[],抑或是a[6]),算出來的sizeof(a)一定都是4(pointer的大小)
但是在main函數裡的sizeof(a)卻跟長度有關(a不也是指向a[0]的pointer嗎?)
而strlen不論在main或是在test均可接到矩陣長度
目前是有點背的方式,strlen的處理不分函數位置
而sizeof只有在當下的函數裡才有效,傳出去的都是pointer
請問這邊有什麼觀念可以補充的嗎?