我对在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<5;z++) {
一样使用for(int z=0;z<NUM;z++) {
?
非常感谢任何回答。
提前致谢。
arr=(int[]){3,1,4,5,2};
我认为它不是有效的 C++。 - Jesse Goodarr=(int[]){3,1,4,5,2};
- shibly-pedantic
编译,你应该会得到一个警告)。 - Jesse Good