|
2鱼币
- #include <stdio.h>
- #include <stdlib.h>
- int main() {
- int *ptr=NULL;
- int num;
- printf("你想输入多少个数字:");
- scanf("%d",&num);
- ptr=(int *)malloc(num*sizeof(int));//这个指针的跨度是num*int
- for(int i=0;i<num;i++)
- {
- printf("请输入第%d个数字:",i+1);
- scanf("%d",&ptr[i]);//ptr[0]=*p+0
- }
- printf("这是int:%lu\n",sizeof(int));
- printf("这是ptr:%lu\n",sizeof(ptr));
- printf("这是&ptr[0]:%lu\n",sizeof(&ptr[0]));
- for (int j=0;j<num;j++) {
- printf("%d ",ptr[j]);
- }
- printf("\n");
- free(ptr);
- ptr=NULL;
- return 0;
- }
复制代码
--------------------------
你想输入多少个数字:3
请输入第1个数字:1
请输入第2个数字:2
请输入第3个数字:3
这是int:4
这是ptr:8
这是&ptr[0]:8
1 2 3
--------------------------
我输入了3个数字那么动态分配的内存不应该是3*4(int)=12吗?
为什么ptr是8个字节?
你的系统里面,指针占用了8个字节。
printf("这是ptr:%lu\n",sizeof(ptr)); 是指针变量的内存空间大小,不是数组的内存空间大小。
printf("这是&ptr[0]:%lu\n",sizeof(&ptr[0]));这个也是指针的内存空间大小。
|
最佳答案
查看完整内容
你的系统里面,指针占用了8个字节。
printf("这是ptr:%lu\n",sizeof(ptr)); 是指针变量的内存空间大小,不是数组的内存空间大小。
printf("这是&ptr[0]:%lu\n",sizeof(&ptr[0]));这个也是指针的内存空间大小。
|