|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc, char *argv[]) {
- int *arr = NULL;
- int num = 0;
- printf("请输入数字的个数:");
- scanf("%d", &num);
- arr = (int *)calloc(num, sizeof(int));
- int i = 0;
- for (i = 0; i < num; i++) {
- printf("请输入第%d个元素:", i);
- scanf("%d", &arr[i]);
- }
- for (i = 0; i < num; i++) {
- printf("arr[%d] = %d\n", i, arr[i]);
- printf("arr + %d = %p\n", i, arr + i);
- }
- printf("%d\n", sizeof(arr));
- printf("%d\n", sizeof(arr[0]));
- int n = sizeof(arr) / sizeof(arr[0]);
- printf("n = %d\n", n);
- printf("%d", arr[3]);
- free(arr);
- return 0;
- }
复制代码
输入num = 4, arr[0] = 23, arr[1] = 34, arr[2] = 35, arr[3] = 9, 为什么输出的时候sizeof(arr) = 8?不应该是16个字节吗?
arr是一个指针。其大小与你的数组大小没关系,与你的系统有关,32位系统就是4字节,64位系统就是8字节。
|
|