C语言核心之数组和指针详解一

本文介绍了C语言中指针的基本概念及其使用方法。通过实例详细解释了如何定义指针、取地址运算符的作用以及指针的类型限制。此外,还提供了一个完整的示例程序帮助读者理解指针的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 指针:

相信大家对下面的代码不陌生:

int i=2;                                            

       int *p;                                             

       p=&i;

这是最简单的指针应用,也是最基本的用法。再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址。如上代码,指针p中保存的是整型变量i的地址信息。

接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和其它变量一样定义:如:int  *p*是间接寻址或间接引用运算符。上例中我们还看到了一个特别的运算符&,它是一个取地址运算符(在其他合适场合&也是按位运算运算符,&&为取交集运算符)。

在上面的指针定义中,我们看到了定义的是一个整型指针,难道指针还有类型吗?答案是肯定的,指针只能指向某种特定类型的对象,也就是说,每个指针都必须指向某种特定的数据类型(唯一的例外:指向void类型的指针可以存放指向任何类型的指针,但它不能间接引用其自身。)。比如,int 类型的指针绝对不能指向char 类型的变量。

下面我们给出一个完整的例子来说明指针的简单应用:

#include<stdio.h>

void main()

{

       int a,b,c,*p;

       a=1;

       b=3;

       p=&a;

       b=*p+1;

       c=*(p+1);

       printf("%d %d %d %d /n",a,b,c,*p+3);

 

}

运行结果为:  1 2 -858993460 4

这是个完整的例子,可以自己在机器上调试一下,现在很多人用的都是微软的Visual Studio 开发环境,有人就不知道在该开发环境中怎么写C程序以及调试C程序,具体境况可以参考附录

在上面例子中,看到了这样两个表达式b=*p+1;c=*(p+1);前者的意思是p所指的地址里的内容加1再赋给b,相当于b=a+1;,后者是p所指的地址加1再把(p+1)所指的地址赋给c,当然我们不知道p的下一个地址里放的是什么,所以输出了一个随机值(这样的操作时很危险的,切记不要使用不确定的内存地址)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值