C语言入门指针操作
来源:互联网 发布:福建水利预算软件 编辑:程序博客网 时间:2024/05/17 01:43
一元运算符&可用于取一个对象的地址,因此,下列语句:
p = &c;
将把c的地址赋值给变量p。我们称p为“指向”c的指针。地址运算符&只能应用于内存中的对象,即变量与数组元素。它不能作用于表达式、常量或register类型的变量。
一元运算符*是间接寻址或间接引用运算符。当它作用于指针时,将访问指针所指向的对象。我们在这里假定x与y是整数,而ip是指向int类型的指针。下面的代码说明了如何在程序中声明指针以及如何使用运算符&和*:
int x = 1, y = 2; z[10];
int *p; /* ip是指向int类型的指针 */
ip = &x; /* ip现在指向x */
y = *ip; /* y的值现在为1 */
*ip = 0; /* x的值现在为0 */
ip = &z[0]; /* ip现在指向z[0] */
指针ip的声明,如下所示:
int *ip;
这样的声明是为了便于记忆。该声明语句表面表达式*ip的结果是int类型。这种声明变量的语法与声明该变量所在表达式的语法类似。同样的原因,对函数的声明也可以采用这种方式。例如:
double *dp, atof(char *s);
表面,在表达式中,*dp和atof(s)的值都是double类型,且atof的参数是一个指向char类型的指针。
指针只能指向某种特定类型的对象,也就是说,每个指针都必须指向某种特定的数据类型。一个例外情况是指向void类型的指针可以存放指向任何类型的指针,但它不能间接引用其自身。
如果指针ip指向整型变量x,那么在x可以出现的任何上下文中都可以使用*ip,因此,语句
*ip = *ip + 10;
将把*ip的值增加10。
一元运算符*和&的优先级比算术运算符的优先级高,因此,赋值语句
y = *ip + 1
将把*ip指向的对象的值取出并加1,然后再将结果赋值给y,而下列赋值语句:
*ip += 1
则将ip指向的值加1,它等同于
++*ip
或
(*ip)++
语句的执行结果。语句(*ip)++中的圆括号是必须的,否则,该表达式将对ip进行加一运算,而不是对ip指向的对象进行加一运算,这是因为,类似于*和++这样的一元运算符遵循从又至左的结合顺序。
最后一点,由于指针也是变量,所以在程序中可以直接使用,而不必通过间接引用的方法使用。例如,如果iq是另一个指向整型的指针,那么语句
iq = ip
将把ip的值拷贝到iq中,这样,指针iq也将指向ip指向的对象。
如例:
#include <stdio.h>void main(){char a = 'K',*p;p = &a;printf("%c\n",a);//a的值printf("%c\n",&a);//a的地址printf("%c\n",&*p);//&*p表示指向a的地址,也就是a的地址printf("%c\n",*p);//*p表示指向a的值printf("%c\n",p);//p表示a的地址printf("%c\n",&p);//&p指针变量的地址}
- C语言入门指针操作
- c 语言入门指针
- C语言指针入门
- C语言指针入门
- C语言 指针入门
- C语言指针操作
- C语言指针操作
- c语言指针操作
- C语言-指针操作
- C语言入门-指针入门
- C语言入门之--指针
- C语言 指针操作练习
- C语言中的指针操作
- C语言指针的操作
- C语言之指针操作
- 【C/C++语言入门篇】-- 深入指针
- 【C/C++语言入门篇】-- 深入指针
- C语言学习入门 (五) 指针
- ARP_t
- 【opencv】cvut.h 怎么找?
- linux编程的108种奇淫巧计-4(编译展开)
- JMX 与系统监控管理
- _渲染图像示例
- C语言入门指针操作
- Unique Paths II
- 字符串去除空白
- cdh4.2.1参数设置
- Windows Azure功能更新:虚拟机按分钟计费、更灵活的免费账户、网站服务的SSL增强、虚拟机ACL、MSDN会员优惠
- Lua中实现默认值表的方法
- 安卓开发01:安卓环境安装
- 豌豆荚市场上一些主流应用的支持版本
- FormsAuthentication实现登录