一、什么是指针?

指针在百度的解释:是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。

也就是说,指针是用于指向某一内存单元。

简而化之,指针便是地址

二、声明指针

1.方法:数据类型 *名称 初始化

2.例如:

int *p=&a //其中int是数据类型,p是指针变量的名称,=&a是对指针变量p的初始化

3.注意:指针声明完一定要初始化,否则就会变成野指针(没有指向的目标);而且指针初始化时只能指向地址,不能指向数据(在*与&中会讲到)。

三、使用指针

指针也是一种变量,对于指针的使用方法和对其他变量的用法一致。

野指针和空指针不同,如果对野指针进行使用,程序将会报错。

四、*和&

1.*:有两个作用,一是在声明变量是,用来标识这个变量是指针变量;二是在其他地方作用于指针时,*代表取值,即*p就取指针p所指向的值。

(*在是声明时,作声明符,是一种作用;在其他地方作用于指针时,做单目运算符,又是另一种作用;还有一种情况,*表示双目运算符,即为乘积的意思,如5*5=25)

2.&:是取地址运算符,例如&a,就是变量a的地址。

五、一个案例看懂指针

#include<stdio.h>
int main(void)
{
int a=; //声明一个变量a,它的值为10
int *p=&a; //声明一个指针变量p,它的值为变量a的地址
printf("a的值为%d\n",a); //输出a
printf("a的值为%d\n",*p); //输出p所指向的值
printf("a的地址为%d\n",p); //输出a的地址
printf("a的地址为%d\n",&a); //输出p的值
return ;
}

六、空指针

1.作用:声明一个指针后,如果暂不使用,可以先给它赋值为NULL,避免其成为野指针。

2.方法:指针名=(数据类型*)malloc(你分配的内存大小)

3.例如:

int *p;
p=(int*)malloc(4);//分配动态内存

4.注意:malloc的数据类型要和指针的数据类型一致;

内存分配后,习惯上都会进行判断是否分配成功,不成功则退出程序;

内存分配使用完之后一定要释放掉,free是释放函数,所以malloc和free必须是成对出现的。

5.案例:

#include<stdio.h>
#include<stdlib.h> //malloc函数和free函数存储在stdiib.h这个函数库里
int main(void)
{
int *p;
p=(int*)malloc();//分配动态内存
if(p==NULL)
{
printf("内存分配失败。\n");
exit(-);//退出
}
*p=;
printf("p指针中的内容=%d\n",*p);
free(p);//内存释放
return ;
}

七、双级指针

双级指针就是指向指针的指针,即:

int*p1=&a; //指针p1指向a的地址
int*p2=p1; //指针p2指向p1

例如:

#include<stdio.h>
int main(void)
{
int a=;
int *p1=&a;
int *p2=p1;
printf("%d\n",*p2); //输出指针p2所指向的指针p1所指向的变量a的值
return ;
}

八、番外

注意看上一个案例,如果我们把p=(int*)malloc(4)改为2,就会报错,如下图(这被称为内存越界)。

这是为什么呢,这就关乎到数据长度的问题了,因为在VC6.0出生时,系统和CPU发展到32位,所以VC6.0是32位的编译器,在VC6.0中,int的数据长度为32/8=4字节;

而TC2.0出生时,系统和CPU还停留在16位,所以TC2.0是16位的编译器,在TC2.0中,int的数据长度为16/8=2字节。

(旧)子数涵数·C语言——指针的更多相关文章

  1. (旧)子数涵数·C语言——hello world

    一说起hello world想必你们就知道我要干什么了,毕竟hello world基本是每个高级语言的第一个案例. 好,切入正题,我们开始用C语言编写hello world! 一.打开C语言的IDE( ...

  2. (旧)子数涵数·C语言——条件语句

    首先,我们讲一下理论知识,在编程中有三种结构,分别是顺序结构.条件结构.循环结构,如果用流程图来表示的话就是: 那么在C语言中,如何灵活运用这三种结构呢?这就需要用到控制语句了. 而条件语句便是控制语 ...

  3. (旧)子数涵数·C语言——让C帮你做计算

    之前,我们学过了我们的第一个C程序--hello World.现在开始进一步学习,想一想如何让C帮你做计算. 我们先来看代码(我没有新建,还是用之前的hello world.cpp): 好,因为之前在 ...

  4. 子数涵数·C语言——循环语句

      之前,我们讲过了编程中的三种结构(顺序.条件.循环),现在我们来看一下循环语句如何编写. 一.while循环语句(先判断后执行) 1 #include<stdio.h> 2 int m ...

  5. (旧)子数涵数·Flash——初识ActionScript

    一.什么是AS(ActionScript) ActionScript,简称AS,中译为"动作脚本语言". 用于在Flash上实现一些光用Flash无法实现的功能. 在Flash界面 ...

  6. (旧)子数涵数·PS ——翻页效果

    一.首先在网络上下载一张图片,作为素材.这是我下载的素材,至于为什么选择这张照片呢,当然不是因为自己的一些羞羞的念头啦. 二.打开Photoshop,我使用的版本是CS3(因为CS3所占的磁盘空间较小 ...

  7. (旧)子数涵数·PS——文字人物

    首先我们来看一下我用到的素材(在百度图库里下载的). 一.打开PS,在PS中打开素材. 二.复制一个图层(好习惯不解释). 三.图像->调整->阈值,或者按下图示按钮后选择阈值,弹出阈值窗 ...

  8. (旧)子数涵数·Flash——影片剪辑的其他操作

    一.复制影片剪辑 1.方法:duplicatemovieClip(影片实名,新实名,深度级别) 2.解释:影片实名就是你要复制的对象,新实名就是你要粘贴的对象,深度级别就是粘贴后的影片剪辑的堆叠顺序( ...

  9. (旧)子数涵数·DW——网页制作的流程

    PS:这是我很早以前的一个废掉的项目. 当时用的还是table排版,现在基本都是div了吧. 这个项目前段时间,我还抢救过一次,后来还是放弃了. 先行.网页制作的流程分为哪些呢? 一.网站策划(当时, ...

随机推荐

  1. 微软MVC对架构的一点思考

    毕业即将三年,在学校学习.做毕设一直使用拖控件的 Winform\WebForm,工作后公司采用MVC3架构做项目. 下面使用mvc的个人总结 : 1.架构上分层清晰.便于研发,耦合性好 2.缓存机制 ...

  2. CodeWarrior环境下中断使用

    对于飞思卡尔CodeWarrior的中断使用,一般有3种方法: 1.把#pragma TRAP_PROC放在中断程序前面,并把中断向量表放到*.prm. 例如: #pragma TRAP_PROC v ...

  3. AppScan学习笔记

    AppScan学习笔记 http://www.docin.com/p-777386896.html

  4. MxNet Windows下安装

    项目链接:https://github.com/dmlc/mxnet 因为要做一些开发工作,prebuilt的lib不能满足需求.由于工作环境要求是windows,所以可以利用cmake工具来构建. ...

  5. 节日EDM系列:圣诞节如何进行EDM数据营销

    消费关系升级,消费者看中的早已不是产品本身,场景消费以及消费带来的价值感体验已成为影响消费的重要因素.圣诞将至,如何才能将圣诞节EDM数据营销的效果发挥到极致? ①  节日元素创意融合,高辨识度加深品 ...

  6. 转:C/C++内存管理详解 堆 栈

    http://chenqx.github.io/2014/09/25/Cpp-Memory-Management/ 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了 ...

  7. VB6.0手册

    1.Form窗体事件 Private Sub Form_Activate() '焦点在此窗口时触发  MsgBox "窗体的Activate事件"  End Sub    Priv ...

  8. 设计师必备!免费下载 PSD 素材的32个网站

    今天我想和大家分享一组可以免费下载 PSD 图形素材的最好的网站. PSD 文件是非常有用的资源,因为你可以看到所有的层,使用了什么技术来创建出这些作品和效果. 某些列出的网站可能已是众所周知的,但你 ...

  9. Hadoop下面WordCount运行详解

    单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/ ...

  10. WebApi 集成 Swagger

    1. Swagger(俗称:丝袜哥)是什么东西? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同 ...