文档章节

C语言学习—指针

紫电_清霜
 紫电_清霜
发布于 2015/10/17 15:15
字数 718
阅读 4
收藏 0
点赞 0
评论 0

1. 指针变量定义与使用

        指针变量

            定义:存放内存地址的变量

        //变量类型:整型指针 = 初始值:NULL恒等于0
        int *p = NULL;
        //指针变量所占字节数只与操作系统有关

        指针类型转换符%p

    printf("p = %p\n", p);

2.  取址运算符& 

int a = 3;
int *p = &a;					
printf("&a = %p\n", &a);
printf("p  = %p\n", p);

3.  取值运算符*

int a = 3, b = 5;
int *p = &a;
printf("%d\n", *p);
p = &b;						
*p = 100;
printf("%d\n", b);

    *和&是配套的操作符

4. 指针的算术运算

    只有加、减运算:

int *p = &a;
p ++;//向高位移动四个字节
p --;//向低位移动四个字节

    注意:指针类型决定移动字节数

注意事项:*p  指针变量定义时,只起修饰作用,告诉编译器p是指针

                指针变量取值时,访问内存地址为p的存储区域

5. 指针与数组

    数组

            数组:⽤用连续内存空间存储数据的构造类型。

            数组名: 数组元素⾸首地址

            例如:int array[3] = {1, 3, 8}; // array 恒等于 &array[0] 

    指针与数组

            指针可以当数组名使用   

             p[1] = 3;            

            恒等于a[1]


            恒等于*(p+1)


            恒等于*(a+1) 

    指针与数组的区别

        所占空间不同

            -指针:只与操作系统位数有关

            -数组:与元素个数和类型有关

         数组名是常量地址,不能重指向(不能赋 值)

            指针可以重指向

6. 指针与字符串

    字符指针可以操作单个字符,也可以操作字符串

    例如:

char string[] = “iPhone”; //string为数组名

char *p = string;//指向字符数组⾸首地址
*(p + 1) = ‘v’;//操作单个字符
printf(“%s”,p + 1);//操作整个字符串


    指针数组

        存放指针的数组称为指针数组。

          例如

char *strings[3] = { “iOS”, “Android”, “Win8”};

7. 指针与函数

    指针作为参数

8. 结构体指针

        定义:指向结构体变量的指针,称为结构体指针 

typedef struct student stu;
stu stu1 = {0};
stu *p = &stu1;
//stu * :结构体指针类型(类型)
//p     :结构体指针变量(变量名)
//&stu1 :结构体变量地址(初值)

    结构体指针访问成员

成员变量
num 1
name  "iPhone"
sex 'm'
score 96.8f
        指针p是第一个成员变量的首地址

9. 结构体数组与指针

    结构体数组的数组名是一个结构体指针常量。

Stu stu[3] = {0};
Stu *p = stu;
//p为结构体指针变量,stu为数组名
//同 int array[3] = {0};int *p = array;

(p + i) -> num ;
使用指针p访问下标为i的元素的成员变量num

10. 结构体指针为函数参数

    函数声明:

        void printStudents(Stu *pstu, int count);

           函数操作结构体数组时,需要传入首地址和元素个数。


© 著作权归作者所有

共有 人打赏支持
紫电_清霜
粉丝 2
博文 10
码字总数 7921
作品 0
沈阳
业余爱好者的C程序设计学习之路

我学习和工作的方向都是化工,和 IT 专业一点边都不搭,属于程序设计爱好者一类。坚持了很多年了,谈谈我的认识。 一、为什么是C 汇编太难,直接下手会吓死宝宝的。 basic 不能考虑,因为“对...

四彩 ⋅ 2016/02/04 ⋅ 2

嵌入式linux爱好者看过来

嵌入式的基础—C语言,针对C语言基础相对薄弱但是想学嵌入式的同学,我们特推出了系列课程,该系列课程包括:嵌入式Linux学习思路分析、C语言基础-数据类型、C语言基础-运算符与表达式、C语言...

farsightemb ⋅ 2011/01/20 ⋅ 0

libevent源码深度剖析

原文地址:http://blog.csdn.net/sparkliang/article/details/4957667 libevent源码深度剖析一 ——序幕 张亮 1 前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

小蚂蚁学习C语言(1)——C语言概述

C语言概述 1. 为什么学习C语言 C的起源和发展 1 第一代语言:机器语言 0101 2 第二代语言:汇编语言 add 1,2 3 第三代高级语言: C语言产生和发展过程: 产生时间:1972-1973 产生地点:美国...

嗜学如命的小蚂蚁 ⋅ 2015/11/26 ⋅ 4

最早接触到的计算机编程语言——c语言

最早接触到的计算机编程语言——C语言 在经过入学后计算机导论的熏陶后,在大一的下半学期我终于接触到了一门语言,这也是我们最早接触的计算机编程语言——c语言。 在初学的时候,感觉这门课...

devops1024 ⋅ 2017/05/06 ⋅ 0

C语言指针专题——常见问题解答合集

小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo或者扫描我的头像,验证时请注明是“知友” 文末会推荐几本书,希望对有需要的朋友有帮助! 之前就C语言指针相关知识写过一个专题,...

石家的鱼 ⋅ 2017/06/17 ⋅ 0

程序员练级-关键提炼

启蒙入门 1.学习一门脚本语言,例如Python/Ruby 2.熟悉Unix/Linux Shell和常见的命令行 3. 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LINUX + APACHE + MYSQL + PHP)      未来必然是W...

zhayefei ⋅ 2013/01/23 ⋅ 4

C语言编程学习之——文件详解

小辰我这次带来一个知识点,C语言里面的文件。涉及到的内容有,1、打开文件 2、读写操作3、关闭文件 4、文件指针。 1、打开文件 2、①读写文件--字符读(fgetc) ②读写文件--字符写(fputc...

小辰带你看世界 ⋅ 01/14 ⋅ 0

C语言指针的讲解(一)

谨记 人一定要经得起假话,受的起敷衍,忍得住欺骗,忘得了诺言,放得下一切,失去的东西,其实从来就不真正的属于你,你也不必惋惜,有得必有失,相信是你的那一定是你的,不是你的就不是你...

长风留言 ⋅ 2017/11/12 ⋅ 0

精品C语言学习资料-教你成为编程高手

亲爱的Down友: 您好!51CTO下载中心为梦想增值,诚邀您的关注! 51CTO下载中心致力于让down友分享技术幵让技术变现,让广大技术爱好者便捷、实惠 的获取优质学习资源。 为了方便大家的学习,...

51CTO下载 ⋅ 2013/12/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 20分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 21分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 22分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 26分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 36分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 39分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 41分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 42分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 54分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 54分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部