假设,
int numbers [20];
int * p;
我认为这是陈述有效
p = numbers;
但这不是
numbers = p;
因为numbers
是一个数组,作为一个常量指针运行,我们不能为常量赋值。因此,如果我们这样做,那么在初始化数组时我们不能使用*numbers
?
答案 0 :(得分:3)
int numbers [20]; int * p;
我认为这是陈述有效
p =数字;
是强>
但这不是
numbers = p;
因为数字是一个数组,作为常量指针运行,我们不能将值赋给常量。
numbers
不是常量指针,它是不可修改的lvalue
,因此您无法分配它。
sizeof(int)
返回任何特定实现的整数大小
sizeof(int*)
返回指向整数的指针的大小。
sizeof()
的返回类型为size_t
(无符号)
答案 1 :(得分:1)
sizeof(int)
返回用于存储int
sizeof(int*)
返回用于存储指针的字节数
要初始化一个常量的int数组,可以使用以下语法:
int numbers[] = { 0, 1, 2, 3 };
答案 2 :(得分:1)
sizeof(int)
是数据类型的大小,sizeof(int*)
是指向数据类型的指针的大小。
你不能将p分配给数字,因为数字被声明为基于int数组的固定长度堆栈,它不是一个int指针(尽管它可以转换为一个)
答案 3 :(得分:-1)
简单来说就是
int numbers [20];
是一个整数数组
int * p;
是指向整数的指针; p存储它指向的地址
numbers = p;
是不可能的;两者都是不同的类型,一个是int,另一个是int *
然而numbers[0] = *p
;是可能的;在某个有效地址提供了p点