为什么数组名称不能像 ponter 一样递增
why array name ca'nt be incremented like a ponter
int main()
{
int a[]={2,3,4,5,6};
int j;
for(j=0;j<5;j++)
{
printf("%dn",*a);
a++;
}
return;
}
给出左值所需的错误但
int main()
{
int a[]={2,3,4,5,6};
int *p,j;
p=a;
for(j=0;j<5;j++)
{
printf("%dn",*p);
p++;
}
return;
}
不。为什么????所以我不明白,即使在 a[] 中,a 被视为指针,那么为什么我们不能像指针一样递增它
因为数组名称不是一个单独的存储单元。它是一个命名的内存扩展数据块。因此,不清楚在哪里存储增量值。
指针和数组不能完全互换。
int main ()
{
int var[MAX] = {10, 100, 200};
for (int i = 0; i < MAX; i++)
{
*var = i; // This is a correct syntax
var++; // This is incorrect.
}
return 0;
}
将指针运算符 * 应用于 var 是完全可以接受的,但修改 var 值是非法的。原因是 var 是一个指向数组开头的常量,不能用作 l 值。
由于数组名生成指针常量,因此只要不对其进行修改,它仍然可以在指针样式表达式中使用
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 为什么在C++中对链表这样做?(像堆叠一样处理它们)
- 堆栈和队列是否像C++中的数组一样传递?
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样
- 我们可以将集合的值存储在变量中吗?就像我们可以将数组的值存储在变量中一样
- 我如何在C++像在 Python 中一样实现 f 字符串?
- 自制的上衣:看起来一样,但不完全相同
- 如何使用 redis-plus-plus 存储二进制数据,就像我想存储结构一样?@for_stack?
- 如何像在 C++ 中处理数组一样对 .txt 文件中的字符进行寻址?
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 像 CPP 中的控制台一样的应用程序
- 为什么C++中没有常量引用,就像常量指针一样?
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 有没有像给定的一样的 std::optional_function
- Java 是否像C++模板一样具有泛型推论?
- 记忆栅栏和记忆屏障是一样的吗
- 对象作为参数传递,就好像我们正在传递构造函数值一样
- 像自定义类一样构造的指针(内置类型)如何工作?
- 为什么数组名称不能像 ponter 一样递增