スタンドアロン関数を使用して配列に割り当てられたバイト数を取得しようとしましたが失敗しました。次のように私のコードは次のとおりです。配列を関数へのポインタとして渡してsizeof()演算子を使用する
#include <stdio.h>
void testing(char *source);
int main(){
char a[12] = "Hello World!";
//printf("%d",sizeof(a)); Prints 12. I want to get this value
testing(a); // Prints 4. I need to get 12 by using functions
return 0;
}
void testing(char *source){
printf("%d",sizeof(source));
}
は、私が12となる取得したいが、出力はそれが4
ポインタを使って 'sizeof'から配列のサイズを取得することはできません。 –
「2 + 2を5にしたい」というようなものです。あなたはそれを "欲しがる"ことができますが、それは起こりません。 'sizeof'はこれをしません。 – AnT
関数を 'void testing(char(* source)[12])'に変更し、関数で 'sizeof * source'を使用します。 –