指针

1.程序中每条指令与数据都存放在计算机的存储器中,在编译或运行中为它们分配内存空间。通过地址与对象类型对应的相应长度引用对象。其中对象的地址时该对象所占存储单元首个字节的弟子。指针就是地址。
2.直接访问:通过变量名访问变量。程序经过编译后,变量名会转换成变量的地址。
间接访问:通过指针变量获取地址,然后访问该地址的变量。
3.指针变量
指针变量是存放地址的变量。他通过指针变量存放某一特定变量的地址,可以建立指针变量于其指向变量的关联。用表示指向。
重要概念:地址:内存中存储单元的编号。
变量:内存中某个特定的存储单元。
指向变量的指针变量:存放某特定变量的指针变量,通过该指针变量可以指向特定变量。
4. 类型 指针变量名 类型是指针变量指向的变量的类型。是类型符与int char一样表示定义的变量为指针变量。
定义的同时初始化: intp=&a
先定义再赋值:int
p;
p=&a;
5.p表示p这个指针变量指向的变量 a=p
&a=p
6.指针变量的运算:就是地址的算数运算,为了实现指针的移动。
& * 优先级相同,结合性自右向左。
指针变量做自增自减运算。
指针变量做相减运算。
指针指向的变量做自增自减运算。
在++,--与同时出现时要用括号区分。
7.用指针变量做函数参数:类型 函数名(类型
指针变量名)
{ 用*指针变量名代替普通参数做运算}
引用:函数名(实参的地址)
指针与一维数组
1.需要对数组元素的指针做加减运算。将数组名赋给指针数组。通过单层循环使指针指向数组中的每一个元素。&a[i]=p++=p+i=a+i a[i]=
(p++)=*(p+i)
指向数组元素的指针做函数参数
与前面将数组做函数参数相似,不过哪里说函数形参定义的是数组,而在这里,实参可以是数组名也就是地址,也可以是指向数组的函数指针变量,而形参是指针变量(其中老师说其实将数组做函数参数时定义形参为数组其实系统在处理时将形参的那个数组作为指针处理)。而在被调函数中用数组参数的表示形式做运算,对被调函数中数组元素的处理直接改变了主函数中的数组元素。
指针与多维数组

1.主要学会各种相同的表示方法与都代表什么吧
a[3][4] intp=a
a[i][j]=
(p+i4+j)
第i行首元素地址:a+i,a[i],
(a+i)
二维数组元素表示方法:a[i][j],(a[i]+j),((a+i))[j],((a+i)+j)
重点:处理一维数组时,将其转化为指向数组元素的指针来处理;处理二维数组时将其转化为指向数组的指针来处理。如在处理a[3][4]时将其转化为int(*a)[4]即指向4个数组的指针来处理。
用指向数组的指针来做函数参数时,函数形参即为指向多个数组的指针。在函数中用二维数组元素表示方法来进行相应运算。
指针与字符串
字符数组的初始化有指针对字符数组的引用关系和指针与字符串的指向关系。
我自己叫做 间接指向与直接指向。但无论是那种形式,都是将首元素的地址赋给了指针变量,而且可以把同一个字符串的首地址分别赋给两个字符指针变量。
直接指向的指向关系不能变,间接指向的指向关系可以变。
指向字符串的指针做函数参数。和指向数组元素的指针做函数参数一样。