考虑以下代码:
double *pi;
double j;
pi = &j;
pi[3] = 5;
我不明白我在这里执行最后一行的可能性。我将pi设置为j的引用,它是一个double变量,而不是double []变量。那么这怎么可能对它执行数组命令呢?
考虑以下代码:
char *c = "abcdefg";
std::cout << &(c[3]) << endl;
输出为“ defg”。我期望我会因为使用&而获得参考输出,但是我却从单元格位置到末尾得到了char *的值。这是为什么?
您在这里有两个单独的问题。
有时有时使用指针指向内存中的数组或缓冲区。因此,它支持[]
语法。在这种情况下,使用pi[x]
x不为0的情况无效,因为您未指向数组或缓冲区。
流对char
指针有重载,以将其视为C样式的字符串,而不输出其地址。这就是第二种情况。尝试std::cout << static_cast<const void *>(&(c[3])) << endl;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句