邹市明拳王金腰带视频:C语言指针
来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 06:48:09
指针:
静态指针:数组的下标;
动态指针:惟一存放地址的变量;(一般就是存放的是值)。
定义方法:
指针的类型 *指针变量名;//
说明:
<1> 指针的类型是有他所指向的变量类型决定的;
<2>*是指针的标识符,看到*知道他是指针 ;
<3>指针变量名取合法的标识符;
int a=5;
int *pa=&a;// &取地址符,进行取地址运算!
pa中存放a在内存中的地址;通过这个地址可以找到a;
例如1:
#include
void main()
{
int k=3,l=6;
cout< cout< int *pk=&k; int *pl=&l; cout< cout< int **ppk=&pk;//此时ppk为二级指针,他存放是地址1,通过这个地址1找到的还是一个地址2,通过现在的地址2可以找到变量; 指针的注意事项: (1)、一级指针 是走一步,访问变量;二级指针是走二步,访问变量; (2)、指针+(-)整数,表示指针上、下移动;如: int s[5]; //一维数组的数组名就是一个一级指针,指向数组的第一个元素(即s中)存放s[0]的地址) int *pa=s;//或者 pa=&s[0] 两者结果相同 pa=s+3;//pa指向s[3]; pa=pa-2;//pa指向s[1]; (3)、两个指针相减,表示中间相差元素的个数; 如: int s[5]={1,2,3,4,5}; pa=s+4;//pa指向s[4] ps-s=4//中间有4个元素; 注意:两个指针相加,是错误的运算 (4)、空指针的运用,int *p=0;//或者=NULL 指针为空,表示指针不指向任何位置,指向一个空的位置。 一般用于,链表的结束。 (5)、指针的两大作用: <1>间接访问变量,我们可以通过一个指针间接地去修改指针所指向的变量的值 ;//此功能有点危险,这样就可以通过一些手段去修改某个变量的值。 方法: int a=6;int *p=&a; 二级指针要**两个才能去间接访问变量。 <2>动态申请空间: int *p=(int *)malloc(sizeof(int));//申请一个单元 *p=7; (1)、指针数组:存放多个指针类型的变量; 如1: int *array[3];// 说明如下:array是个数组,有3个元素,每个元素里面放一个指向整型的指针 ;//画图 [array]--> array[0]--->[ 5] x array[1]--->[6] y array[2]--->[7] z //(int x=5,y=6,z=7) 则: array是 一个二级指针,**array=10;则x=10; 访问方式为:*(array[i])=666; 如2: char *name[10];//字符串指针数组 说明如下:name是一个数组,有10元素,每个元素里面放一个指向字符的指针; 如在计算机里面存储 "张三" "李四" "王五" 可以用char *name[10]; 访问方式为:name[0]="张三"; 也可以 for(int i=0;i<10;i++)//读入10人的姓名 scanf("%s",name[i]); (2)、数组指针:指针是指向一个数组的 如: int a[5];//一维数组的数组名就是一个指向第一个元素的指针; a就是数组指针; 访问方式为:a[i]或者*(a+i); (3)、指向指针的指针:二级指针; 如:int a=6,*pa=&a; int **p=&pa;//二级指针 **p=99;//二级指针加**访问变量 (4)、int *sp[4]; 与 int (*sp)[4]的区别: int *sp[4];//sp是一个数组,数组有4个元素,每个元素里面存放一个指向整型的指针 //sp是一个二级指针 int (*sp)[4];//sp是一个指针,sp是一个行指针,指向某行该行有4列个元素;此处不是很理解 //sp就是一个二维数组的行指针,sp+1移到下一行,移动4个元素
}
###*p可以访问a,*p=4 等同于 a=4###