我遇到了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