关于C指针,在网上猛看一通,越看越混乱,到头来还是一头雾水。在此偷一下懒,向前辈请教一下。
我是由汇编转过来的,对于操作内存使用的偏移地址啥的概念还算比较清晰。就这C程序中的指针搞不懂。
我先说说我目前理解的指针。(写的有些长,请多担待)
1.指针是一个指向另外对象(内存地址)的变量
·但这个指针实质的变量数值是绝对地址还算偏移量?
如100H首地址下有一个数组,指针指向第三个(当char型),
那指针里的内容是103H还是03H?就是说是绝对地址还是偏移地址?
怎么样的语法取出这个数值?
指针是不是不允许直接写入常数?
又怎样的语法可以取出这个指针所指向数组的内容(就是数组的第三位)
2.指针是一个特殊变量,但还是一个变量而已,它自己也要占一个或多个绝对的地址
这取决指针的类型,那怎么样的语法能取到这个指针它所占的地址值?
3.指针指向的类型和指针本身类型可以不同或者说完全没关系
指向的类型说明了数据类型,也代表指针自加1时自身数值加的权数,
如int型指针可以指向int型地址也可以指向long int 型 ,区别是前者指针+1,自身数值+2,后再指针+1,自身数值+4.目的是为了匹配类型而已.
以上,是我暂时对C指针的朦胧见解和疑惑,
有错误的地方请各位高高手指出,万分感激。
(文字表达能力极差,也不知道大家能不能看懂,呵呵)