Cでのポインターの使用に関して、いくつかの混乱/問題があります。簡単に理解できるように、以下にサンプルコードを配置しました。これらのコードの違いに注意してください。理解に問題がある場合は、フィードバックをお寄せください。
これは機能しません。
#include <stdio.h>
#include <stdlib.h>
void process() {
int *arr;
arr=(int*)malloc(5*sizeof(int));
arr=(int*){3,1,4,5,2};
for(int z=0;z<5;z++) {
printf("%d ",arr[z]);
}
printf("\n");
}
int main() {
process();
return 0;
}
しかし、これは機能します。
#include <stdio.h>
#include <stdlib.h>
void process() {
int *arr;
arr=(int*)malloc(5*sizeof(int));
arr=(int[]){3,1,4,5,2};
for(int z=0;z<5;z++) {
printf("%d ",arr[z]);
}
printf("\n");
}
int main() {
process();
return 0;
}
これも機能します。なんで?ここではメモリを割り当てませんでした。
#include <stdio.h>
#include <stdlib.h>
void process() {
int *arr;
arr=(int[]){3,1,4,5,2};
for(int z=0;z<5;z++) {
printf("%d ",arr[z]);
}
printf("\n");
}
int main() {
process();
return 0;
}
なぜそれらは同じではないのですか?
arr=(int*){3,1,4,5,2};
arr=(int[]){3,1,4,5,2};
この個別の割り当て方法で使用せずに、整数ポインターの配列を初期化する他の方法はありますか?
arr[0]=3;
arr[1]=1;
arr[2]=4;
arr[3]=5;
arr[4]=2;
静的for(int z=0;z<NUM;z++) {
ではなくのようなものを使用できるように、ポインタのメモリ内の割り当てのサイズ/数を取得するにはどうすればよいですか?for(int z=0;z<5;z++) {
どんな答えでも大歓迎です。
前もって感謝します。