gpt4 book ai didi

c++ - 编译器如何处理数组声明

转载 作者:行者123 更新时间:2023-11-28 00:52:04 25 4
gpt4 key购买 nike

char c='c';
char *pc = &c;
char a[]="123456789";
char *p = &(a[1]);
cout <<"the size of the a: "<< sizeof (a)<< endl; //10
cout <<"the size of the p: "<< sizeof (p)<< endl; //4
cout << p[100] <<endl;//cross boundary intentionally
cout << pc[0];//c
cout << pc[1];

编译器不再将 p 视为数组?编译器如何验证它是否是数组? ppc 有区别吗?

谢谢!!!!

最佳答案

Compiler no longer treat the p as an array?

它从未将其视为数组,因为它不是。它始终是一个指针。 数组不是指针。阅读本文,接受它,拥抱它!它们有时退化为指针(当作为参数传递时),但它们不是指针。

Is there any difference between p and pc ?

按类型 - 没有。区别在于它们指向不同的 char

此外,pc[1] 是未定义的行为。您只拥有 pc 直接指向的内存 - 即包含字符 'c' 的单个字节。 p[100] 也是如此。

关于c++ - 编译器如何处理数组声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com