我想我可以标记 C++、汇编和 C,因为内存管理在所有语言中的工作方式都相似。
我刚刚进入 C 语言阶段,正在学习指针。我知道如果你存储一个字符串(或者在 C 中,更广为人知的是 char 数组),它实际上只是该数组第一个元素在内存中的一个地址。
数组的第一个元素如何知道它必须对整个数组计数多少,我自己的猜测是它在第一次出现 \0
时停止,但我是对的吗?我告诉过 \0
是一个标志,表明数组已经完成,你已经击中了最后一个元素(或者从技术上讲,在最后一个元素之后 1)。
我想我发布这个是为了验证我可能是正确的答案。谁能更详细地解释一下?
最佳答案
不是。
使用太大的值作为索引,并且您从数组外部的内存读取/写入。
在 C++ 中执行此操作,优化器可能会缓存数据而不刷新它并获得疯狂的程序状态 (UB)。
现在,通过 =
在结构中复制一个数组?然后在编译时知道大小,同样不使用运行时标记。
关于c - 内存地址如何知道数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50126309/