C 指针的 基础 知识

来源:互联网 发布:weui.js cdn 编辑:程序博客网 时间:2024/06/06 11:43


指针是一种保存 变量地址 的 变量  . 


一元运算符 & 可用于取一个对象的地址 . 

p = &c ;

将 c 的地址赋值给变量 p ,我们称 p 为指向 c 的指针 . 

地址运算符 & 只能应用于内存中的对象 ,即 变量 和 数组元素 。

 

一元运算符 * 是间接寻址或间接引用运算符 . 当它作用于指针时,将访问指针所指向的对象 . 


int  *ip;

这样声明是为了便于记忆 .  该声明语句表达式 *ip 的结果是 int 类型


如果指针 ip 指向整型变量 x ,那么可以在 x 出现的任何上下文中都可以使用 *ip 来代替  .

 * ip = *ip +10;


一元运算符 * 和 &  的优先级比 算术运算符 的优先级 高 . 

y = *ip + 1;   //将把 ip 所指向的对象的值取出并加1  .


*ip += 1       ++*ip      ( *ip )++    互相等同  . ip 所指向的对象的值取出并加1 .

因为 * 和 ++ 这样的一元运算符遵循从 右到左 的结合顺序 .



指针与函数参数:


C语言是以传值的方式将   参数值  传递给被调用函数 ,因此, 被调用函数不能直接修改主调函数中变量的值 .


void swap(int x, int y){int temp;temp = x;x = y;y = temp;}

swap(a , b);

这个函数仅仅交换了 a 和 b 的副本的值 .  


下面这个函数 . 

swap( &a , &b);   

由于一元运算符 & 用来取变量的地址 , 这样 &a 就是一个指向 变量a 的指针 ,

swap 函数的所有参数都声明为指针, 并且通过这些指针来间接访问他们指向的操作数 . 


void swap(int *x, int *y){int temp;temp = *x;*x = *y;*y = temp;}




原创粉丝点击