1

char 配列のサイズに問題があります。char 配列を関数に渡し、関数を実行した後でも、 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];  

}
4

4 に答える 4

0

sizeof()コンパイル時にサイズがわかっている場合は、静的配列のみのサイズを見つけるために使用できます。したがって、コンパイル時に決定された配列のサイズを常に返します。

于 2013-05-06T23:39:28.347 に答える