邹市明拳王金腰带视频:C语言指针

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 06:48:09
转载于 http://ghbsje.blog.163.com/blog/static/66330212006112153931867/
指针:

静态指针:数组的下标;

动态指针:惟一存放地址的变量;(一般就是存放的是值)。

定义方法:

指针的类型  *指针变量名;//

说明:

<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;

*p=4;//间接访问 直接访问是a=4;一级指针 一个*去间接访问,
###*p可以访问a,*p=4 等同于 a=4###

二级指针要**两个才能去间接访问变量。

<2>动态申请空间:

int *p=(int *)malloc(sizeof(int));//申请一个单元

*p=7;

int *pp= (int *)malloc(sizeof(int)*5);//申请5个单元 数组  转载于 http://ghbsje.blog.163.com/blog/static/66330212006112153824886/ 

(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个元素