我对 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++) {
静态的?
任何答案都非常感谢。
提前致谢。