《C和指针》——C语言补漏(指针篇)
2016-12-20 本文已影响51人
什么都值得
没错,对于指针,我确实只能摘取书上的少许内容,因为我在数据结构的时候已经弄明白了很多,所以这一部分并没有仔细的看,还有后面的用C语言实现抽象数据类型,数据结构里也有讲,所以我建议还是先看《C和指针》再去学数据结构。
-
在声明指针变量时,可以为它指定初始值,如:
char *message = “Hello World!”;
-
指向整型常量的指针,可以修改指针的的值,但不能修改它所指向的值:
int const * p;
指向整型的常量指针,指针本身无法被修改,但是可以修改它说指向的整型的值:
int * const p;
-
指针变量可以作为左值,如
*d = &a;
并不是因为他们是指针,而是因为他们是变量,左值必须要能找到确切的位置 -
指针其实也可以相减,前提是他们都指向同一个数组中的元素,而且减法的结果是经过了调整的,会除以元素类型的长度
-
数组(指针)也可以用负来访问,如
a[-1]
,但是这和其它语言的负索引并不一样,它是指a这个指针前面的一个元素。数组甚至可以用诸如2[array]
访问,因为他们都会被翻译为#( 2 + (array) )
-
之所以我们在函数声明中包含二维数组的时候必须把第二维的数目声明,是因为我们传递进去的是一个指针数组
-
在建立指向函数的指针的时候可以建立一个转换表,就是一个函数指针数组
-
在数组不够用的时候要学会使用动态内存分配,一般初始用malloc,之后如果发现不够用,就用realloc
-
字符串常量也是一个指针,如
”123″+1
表示的并不是123
,而是123
这个字符串的指针加1即元素2的指针,也可以这样烦我呢”123″[1]
,他就是元素2