博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
零基础学C语言 指针
阅读量:7206 次
发布时间:2019-06-29

本文共 1193 字,大约阅读时间需要 3 分钟。

成也指针,败也指针。对于C语言来说,指针是他的招牌,却也是最令人望而生畏的。我会尝试用很号理解的方式去阐述,希望你可以看的明白。

指针的定义

其实指针就是一个普通的变量,只是他存放的是一个地址,他占用的空间是固定的,在32位系统上是4个字节,在64位的系统上是8个字节。

#include 
int main(){ int num = 10; int *num_point = # char *names[] = { "Alan", "Frank", "Mary", "John", "Lisa" }; char *name = "Tom"; printf("num is %d\n", *num_point); printf("names is %s\n", names[0]); printf("names is %s\n", *names); printf("name is %s\n", name);}复制代码

运行结果如下,其中的*是一个取值符号:

num is 10names is Alannames is Alanname is Tom复制代码

解释一下

这里解释一下数组指针和字符串指针。其中,数组指针是定义了一个指向一个数组的指针,而且是指先数组第一个元素的。所以在上面的names[0]*names结果是一样的。我用int指针来作为对比解释:

我们在定义的时候可以分解为这样:

int num = 10;int *num_point;num_point = #复制代码

所以,num_point就是一个地址,我们通过取值符号*得到的就是10。同理:

char *names[] = {        "Alan", "Frank",        "Mary", "John", "Lisa"    };printf("names is %s\n", names[0]);printf("names is %s\n", *names);复制代码

所以其中names就是一個地址,指向數組的第一個元素,通过取值符号*得到的就是“Alan”

关于指针的一些定义

type *ptr    //type类型的指针,名为ptr。复制代码
*ptr    //ptr所指向位置的值复制代码
*(ptr + i)    //(ptr所指向位置加上i)的值,以字节为单位的话,应该是ptr所指向的位置再加上sizeof(type) * i。复制代码
&thing    //thing的地址。复制代码
type *ptr = &thing    //名为ptr,type类型的指针,值设置为thing的地址。复制代码
ptr++    //自增ptr指向的位置。复制代码

转载地址:http://ecpum.baihongyu.com/

你可能感兴趣的文章
Filtering Specific Columns with cut
查看>>
多线程编程1-NSThread
查看>>
反馈组态的判别
查看>>
【Web】Rest API 验证授权如何做?
查看>>
Swift 中的 @autoclosure
查看>>
多迪将企业的Python工程师定位成哪几类?
查看>>
Rom 检测
查看>>
【iOS工具】rvm、Ruby环境和CocoaPods安装使用及相关报错问题解决(2016 12 15 更新)...
查看>>
Weex学习指南
查看>>
TiDB DevCon 2019 报名开启:年度最高规格的 TiDB 技术大会
查看>>
React Native 初体验
查看>>
数据结构与算法 | 线性表 —— 链表
查看>>
Python3 websocket通信
查看>>
使用MarkDown画矩阵
查看>>
JavaScript函数式编程学习
查看>>
ESXi6.7安装流程和bug处理
查看>>
Alibaba Cluster Data 开放下载:270GB 数据揭秘你不知道的阿里巴巴数据中心
查看>>
巧用这19条MySQL优化,效率至少提高3倍
查看>>
【译】Swift算法俱乐部-查找最大/最小值
查看>>
跟着老司机玩转Node自定义命令行
查看>>