我遇到了char數組大小的問題。我將一個char數組傳遞給函數,並且在運行該函數後,我仍然希望使用sizeof來檢查數組的大小,它不會給我數組的新大小,而是舊大小?我想知道爲什麼?非常感謝你!爲什麼字符數組的大小相同使用sizeof()
#include<iostream>
using namespace std;
void replacement(char* arr, int len){
int count=0;
for(int i=0; i<len; i++){
if(arr[i]==' '){
count++;
}
}
int newlen=count*2+len;
//arr[newlen]='\0';
int k=newlen-1;
for(int i=len-1; i>=0; i--){
if(arr[i]!=' '){
arr[k--]=arr[i];
}
else{
arr[k--]='0';
arr[k--]='2';
arr[k--]='%';
}
}
}
int main(){
char arr[]="ab c d e g ";
cout<<sizeof(arr)<<endl;
replacement(arr, sizeof(arr));
int i=0;
while(arr[i]!=NULL) cout<<arr[i];
}
可能重複[Sizeof數組作爲參數傳遞](http://stackoverflow.com/questions/1328223/sizeof-array-passed-as-parameter) – 2013-05-06 23:34:22
@MatsPetersson不,這是不同的,他沒有使用參數上的'sizeof'。 – Barmar 2013-05-06 23:35:06
'while(arr [i]!= NULL)cout << arr [i]; '是一個無限循環。 – 0x499602D2 2013-05-06 23:35:33