简单的C指针澄清
我刚开始使用C语言中的指针而且我只是简单地挂了一些东西.我想确保我理解正确.
说我有这样的事情: int * buff; 从我读到的, * buff指的是buff当前指向的值 但我坚持的是: “buff”是指什么?它是指内存中的& buff的位置,它指向值* buff的位置? 谢谢你! :3 -jtsan 解决方法
int *表示“指向int的指针”.所以,在这里,buff是指向int的指针.为了简单起见,我们也说:
int x = 5; int *buff = &x; x,一个整数,设置为5. * buff表示“buff指向的东西”,在这种情况下为5. & buff表示“buff的地址”:数字buff本身存储在存储器中的地址. 我想分享一下我用来了解指针在我开始时如何工作的一般技巧. 拿一张大方格纸,纵向放在你面前的桌子上.这是你电脑的记忆.每个框表示一个字节.选择一行,并将数字“100”放在最左边的框下方.这是内存的“最低地址”. (我选择100作为非0的任意数字,您可以选择另一个.)从左到右按升序对数字进行编号. +---+---+---+---+---+-- | | | | | | ... +---+---+---+---+---+-- 100 101 102 103 104 ... 现在,暂时假装int是一个字节大小.你是一台八位电脑.将你的int写入其中一个框.方框下面的数字是它的地址.现在选择另一个框来包含int * b =& a. int * b也是存储在内存中某处的变量,它是一个包含& a的指针,发音为“a的地址”. int a = 5; int *b = &a; a b +---+---+---+---+---+-- | 5 | |100| | | ... +---+---+---+---+---+-- 100 101 102 103 104 ... 现在,您可以使用此模型直观地处理您看到的值和指针的任何其他组合.这是一个简化(因为正如语言学者会说,指针不一定是地址,内存不一定是顺序的,并且有堆栈,堆和寄存器等等),但这是一个非常好的类比,99%计算机和微控制器. 您也可以将模型扩展为真正的四字节整数… int a = 5; char b = 2; a a a a b +---+---+---+---+---+-- | 0 | 0 | 0 | 5 | 2 | ... +---+---+---+---+---+-- 100 101 102 103 104 ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |