c的指针

来源:互联网 发布:JSP删除数组 编辑:程序博客网 时间:2024/05/16 16:00

学习C语言也有一段时间了,是时候总结一下了。

定义:指针是一种保存变量地址的变量。


语句 p = &c;    将把c的地址赋值给变量p,我们称p为“指向”c的指针。地址运算符&只能应用于内存中的对象,即变量与数组元素,它不能作用于表达式、常量或register类型的变量。

一元运算符*是间接寻址或间接引用运算符。

int x = 1,y =2, z[10];

int *ip;            // 将ip声明为指向int的指针

ip = &x           //将x的地址赋值给ip,也就是ip指向x

y = *ip//*ip表示获取ip指针指向变量的值,也就是x的值,然后将它赋值给y

*ip = 0//*ip在等号的左边,以左值形式存在,也就是代表所指向的变量,类似于x = 0

ip = &z[0]//ip指向z数组的第一个元素,就是指向z[0] ,也可以写成ip = z,因为z就是默认第一个元素的地址

有效的指针运算:

1.相同类型指针之间的赋值运算

2.指针同整数之间的加法或减法运算

3.指向相同数组中元素的两个指针间的减法或比较运算

4.将指针赋值为0或指针与0之间的比较运算


指向指针的指针:

根据指针的定义,其实,指向指针的指针就是,一个指针保存了指向其他数的指针的地址.

#include <stdio.h> int main () {   int  var;   int  *ptr;   int  **pptr;   var = 3000;   /* take the address of var */   ptr = &var;   /* take the address of ptr using address of operator & */   pptr = &ptr;   /* take the value using pptr */   printf("Value of var = %d\n", var );   printf("Value available at *ptr = %d\n", *ptr );   printf("Value available at **pptr = %d\n", **pptr);   return 0;}

输出结果是这样的:

Value of var = 3000Value available at *ptr = 3000Value available at **pptr = 3000


指针数组和数组指针:

指针数组指的是由指针构成的数组,里面的指针指向指针内存储的地址,也可以说数组的元素是地址。而数组指针却是一个指向数组的指针,指针的值是数组的地址。

     

0 0
原创粉丝点击