数组/ arrayname不是指向C中第一个元素的指针吗?

前端之家收集整理的这篇文章主要介绍了数组/ arrayname不是指向C中第一个元素的指针吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
下面的内容是不是arrayname总是指向C中第一个元素的指针?
int myArray[10] = {0};

printf("%d\n",&myArray); /* prints memadress for first element */
printf("%d\n",myArray); /* this prints a memadress too,shows that the name is a pointer */

printf("%d\n",sizeof(myArray)); /* this prints size of the whole array,not a pointer anymore? */
printf("%d\n",sizeof(&myArray)); /* this prints the size of the pointer */

解决方法

数组名称是数组名称.数组名称是标识整个数组对象的标识符.它不是指向任何东西的指针.

当在表达式中使用数组名称时,几乎所有上下文中的数组类型都会自动隐式转换为指向元素类型(这通常称为“数组类型衰减”).结果指针是一个完全独立的临时右值.它与数组本身无关.它与数组名称无关.

不进行隐式转换时的两个例外是:operator sizeof和unary operator& (地址的).这正是您在代码中测试的内容.

猜你在找的C&C++相关文章