总有人说c语言的三座大山及,指针,函数,数组,在学习当中给我们带来了很大的困扰,对抽象问题无法理解,好,很高兴我翻越了其中一座山,接下来我会分享这三个问题的学习方法,每个章节后面都会附有练习题,需要着重强调的是,题一定要自己想办法敲一下,对概念的理解和发现问题有很大的帮助,好了,祝大家尽快渡过难关!!!
- 指针的定义:
格式: <存储类型> <数据类型> * 变量名称;
eg: char * pc;
==》数据类型用于标识目标存储空间大小
==》* 表示该类型是一个指针
==》变量名称则用于存储地址的值。
2 “&”用以获取一个变量的地址,“ * ”取出一个地址内的值
px+n指针向下偏移一个单元,不改变指针的值,
px++改变指针的值
注意:数组名称是常量,不能赋值(++用的时候会报错)
if(pa = NULL) :pa变量赋值,且值为假,不执行
if(pa == NULL):逻辑判断,看pa内部是不是为空
3.指针初始化
char * pc = NULL;
作用 避免野指针,没有任何初始化的指针。
指针的变量地址初始化: char *pc = &c;
用其他指针初始化: char *pc = &c;
用绝对地址初始化:char *pc = 0x23423423; 注意:该地址必须是可以访问的地址。一般不建议采用
5.数组与指针
- 相同点啊a[i] = pa[i]
(pa + i) =(a+i)
a[i] = pa[i] = *(pa+i) = *(a+i);
数组名称是一个指针常量,不允许改变。
pa指针是指针变量,可以随时修改。
char buff[] ="aasdfadsf"; ===>buff是本地内存
137 char *pa = &buff[0]; ==>pa 指向本地内存,可以修改。
138 char *pb = "asdfadf"; ==>pb 指向静态常量区数据&