4个回答
展开全部
楼主,其实,C语言里面只有变量和常量,根本没有什么指针,指针也是变量。变量是一个“名化”(就是有名字)的存储空间。一个变量具有二重属性,一是值,二是地址(物理地址,就是内存中的位置)。变量名与值绑定在一起,通过变量名我们可以访问存放在它所代表的这个存储空间里的值,可以把新的值放进它所代表的这个存储空间(同时原来的值被覆盖掉)。而变量的另外一个属性,地址,则是隐性的。C语言里面我们需要在变量名前面使用取地址运算符&来获取。比如说:
int a, b;声明了一个变量,我们可以写a = 3(把3放进a所代表的存储空间里面),我们可以写b = a + 2;我们把a里面的值取出来加2后得到的值5放进b所代表的存储空间里面。如果我们想知道a所代表的存储空间到底在内存中的什么位置,那我们可以写 &a,这个时候&a就把a所代表的内存空间的位置,就是变量a的地址取出来了。由于内存里面每一个单元的地址是用正整数来标记的(就像座位编码1,2,3...号一样),所以地址也可以被当作值(正整数不就是值吗?)来看待,不妨假设&a=1024,既然地址是值,那我们就可以把它存到另外一个存储空间里面,我们写int * p = &a;正是此意。
楼主,你不妨记住我在这儿给你说的每一句话,尤其是开头的那两句,现在不明白不要紧,时候到了你自然会明白,到那时候你就知道此乃金玉良言!
int a, b;声明了一个变量,我们可以写a = 3(把3放进a所代表的存储空间里面),我们可以写b = a + 2;我们把a里面的值取出来加2后得到的值5放进b所代表的存储空间里面。如果我们想知道a所代表的存储空间到底在内存中的什么位置,那我们可以写 &a,这个时候&a就把a所代表的内存空间的位置,就是变量a的地址取出来了。由于内存里面每一个单元的地址是用正整数来标记的(就像座位编码1,2,3...号一样),所以地址也可以被当作值(正整数不就是值吗?)来看待,不妨假设&a=1024,既然地址是值,那我们就可以把它存到另外一个存储空间里面,我们写int * p = &a;正是此意。
楼主,你不妨记住我在这儿给你说的每一句话,尤其是开头的那两句,现在不明白不要紧,时候到了你自然会明白,到那时候你就知道此乃金玉良言!
2007-11-11
展开全部
具体一些,总不能在这里把指针的所有知识都讲一次吧?!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a,*p
a=5;
*p=a %把a的地址赋给p
p就等于&a即a的地址
a=5;
*p=a %把a的地址赋给p
p就等于&a即a的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个简单,首先你要明白,每一块内存都是有一个对应的地址编码的。你需要这么理解。
在内存里面除了存数据外,还会存内存的地址。比如 我们定义:int a=1;那么要开辟两个内存块:一个是存当整数1的,还有一个就是存放这个1的地址的。而指针就是地址。“*”其实有两种含义,一个定义的时候用,比如
int *p,这个的意思是标识这个P是一个指针。*p++里面的*是表示取p这个变量里保存的地址里面的数据。&是表示取变量的地址。不要把指针想的多难,你只要简单地知道内存是有地址编号的,而内存既能数据,也能存地址。
在内存里面除了存数据外,还会存内存的地址。比如 我们定义:int a=1;那么要开辟两个内存块:一个是存当整数1的,还有一个就是存放这个1的地址的。而指针就是地址。“*”其实有两种含义,一个定义的时候用,比如
int *p,这个的意思是标识这个P是一个指针。*p++里面的*是表示取p这个变量里保存的地址里面的数据。&是表示取变量的地址。不要把指针想的多难,你只要简单地知道内存是有地址编号的,而内存既能数据,也能存地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询