设为首页 加入收藏

TOP

指针的使用方法【三】
2014-11-23 22:37:02 来源: 作者: 【 】 浏览:2
Tags:指针 使用方法

下面介绍指针与数组的关系

指向一维数组的指针

指向多维数组的指针

指向字符串的指针

1.指向数组元素的指针变量的定义方式:类型 *指针变量名

例如:int * p;

2.数组名的含义:数组名代表数组的首地址。

3.指向数组元素的指针变量的赋值:指针变量= 数组某一元素的地址(通常是首地址)

例如: int a[10],*p;

p=a;或p = &a[0];

图示:

\

指向数组的指针的加减运算

p++;//p指针移动p所指向类型的字节,p所指向的是int型数组,所以p移动两个字节指向a[1]

引用一个数组有两种方法:

1.下标法:如a[i]

2.指针法:如*(a+i)或*(p+i)

若有数组及指针定义 int a[5] ,*p = a;

下标法:a[0] a[1] a[2] a[3] a[4]

指针法:*p *(p+1) *(p+2) *(p+3) *(p+4)

p[0] p[1] p[2] p [3] p[4]

*a *(a+1) *(a+2)*(a+ 3) * (a+4)

通过数组名计算数组元素的地址,找出元素的值

main()

{

int a[10];int i;

for (i = 0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(i = 0 ;i<10;i++)

printf("%d",*(a+i));

}

用指针变量指向数组元素:

main()

{

int a[10];

int *p,i;

for(i = 0 ;i<10;i++)

scanf("%d",p++);

printf("\n");

for(p = a;p<(a+10);p++)

printf("%d",*p);

}

注:p++合法,但a++不合法(a是数组名,代表数组首地址,是常数地址)

要注意指针变量的当前值

p++;(或p+=1;)

p将指向下一个元素,即a[1].

x = *p++;//不建议使用

*与++是同级运算,等价于先计算*p,为x赋值a[0],再++

*(p++)与*(++p)

*(p++)是先取*p的值,后使p+1;

*(++p)是先使p加1,后取*p的值

(*p)++;

表示p所指向的元素值加1(即a[0]++),而不是指针值加1.

Example:

main()

{

int a[3],*p =a;

a[0] = 10; a[1] = 20;a[2] = 30;

printf("%d/t",*p++);

printf("%d\n",*++p);

}

输出结果:10 30

main()

{

int a[] = {1,2,3,4,5};

int *p = a+3;

printf("%d,%d,%d\n",*p,*(p+1),*p+3);

}

结果:4,5,7

多维数组的指针

1.定义引用形式与指向一维数组的指针类似

例如:int a[3][4],*p

p=&a[2][3];

2.行列地址表示

若有定义:int a[3][4];

下图表格中的数字表示每个元素的地址值。

\

指针与字符串

1.字符串的表示形式

用字符数组实现:char string[] = " I Love China!";

用字符指针实现:字符指针变量的定义 :char *p;

赋值:指针=串中某一字符地址

char *s = "I Love China!" ;//初始化s

\

字符串都以/0为结束标示符,所以实际长度为字符串长度+1.

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Lua学习笔记(十六) 下一篇c语言中指针的使用【一】

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: