У меня есть некоторые путаницы/проблемы об использовании указателей в 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++) {
статически?
Любой ответ высоко оценен.
Спасибо заранее.