(旧)子数涵数·C语言——指针
一、什么是指针?
指针在百度的解释:是编程语言中的一个对象,利用地址,它的值直接指向(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语言——指针的更多相关文章
- (旧)子数涵数·C语言——hello world
一说起hello world想必你们就知道我要干什么了,毕竟hello world基本是每个高级语言的第一个案例. 好,切入正题,我们开始用C语言编写hello world! 一.打开C语言的IDE( ...
- (旧)子数涵数·C语言——条件语句
首先,我们讲一下理论知识,在编程中有三种结构,分别是顺序结构.条件结构.循环结构,如果用流程图来表示的话就是: 那么在C语言中,如何灵活运用这三种结构呢?这就需要用到控制语句了. 而条件语句便是控制语 ...
- (旧)子数涵数·C语言——让C帮你做计算
之前,我们学过了我们的第一个C程序--hello World.现在开始进一步学习,想一想如何让C帮你做计算. 我们先来看代码(我没有新建,还是用之前的hello world.cpp): 好,因为之前在 ...
- 子数涵数·C语言——循环语句
之前,我们讲过了编程中的三种结构(顺序.条件.循环),现在我们来看一下循环语句如何编写. 一.while循环语句(先判断后执行) 1 #include<stdio.h> 2 int m ...
- (旧)子数涵数·Flash——初识ActionScript
一.什么是AS(ActionScript) ActionScript,简称AS,中译为"动作脚本语言". 用于在Flash上实现一些光用Flash无法实现的功能. 在Flash界面 ...
- (旧)子数涵数·PS ——翻页效果
一.首先在网络上下载一张图片,作为素材.这是我下载的素材,至于为什么选择这张照片呢,当然不是因为自己的一些羞羞的念头啦. 二.打开Photoshop,我使用的版本是CS3(因为CS3所占的磁盘空间较小 ...
- (旧)子数涵数·PS——文字人物
首先我们来看一下我用到的素材(在百度图库里下载的). 一.打开PS,在PS中打开素材. 二.复制一个图层(好习惯不解释). 三.图像->调整->阈值,或者按下图示按钮后选择阈值,弹出阈值窗 ...
- (旧)子数涵数·Flash——影片剪辑的其他操作
一.复制影片剪辑 1.方法:duplicatemovieClip(影片实名,新实名,深度级别) 2.解释:影片实名就是你要复制的对象,新实名就是你要粘贴的对象,深度级别就是粘贴后的影片剪辑的堆叠顺序( ...
- (旧)子数涵数·DW——网页制作的流程
PS:这是我很早以前的一个废掉的项目. 当时用的还是table排版,现在基本都是div了吧. 这个项目前段时间,我还抢救过一次,后来还是放弃了. 先行.网页制作的流程分为哪些呢? 一.网站策划(当时, ...
随机推荐
- 使用Condition实现多线程之间调用(生产消费模式)
一,object 类的wait(),notify()和notifyAll() Java 线程类也是一个object 类,它的实例都继承自java.lang.Thread 或其子类.wait(),not ...
- JQuery 表格拖动调整列宽效果
类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放开鼠标,表格列宽会被调整.最近比较空闲,便自己动 ...
- Android下海康实时视频解码
折腾了一个多月,终于调出来了.....首先吐槽一下海康SDK,同时也感谢之... 手头有个项目,需要实时抓取海康摄像头,我是在Android下实现的,海康官网上没有Android SDK,这里友情提醒 ...
- Centos用yum升级mysql到(5.5.37)
原文:http://www.if-not-true-then-false.com/2010/install-mysql-on-fedora-centos-red-hat-rhel/ 1. Change ...
- CCF推荐国际学术期刊
中国计算机学会推荐国际学术期刊 (计算机系统与高性能计算) 一.A类 序号 刊物简称 刊物全称 出版社 网址 1 TOCS ACM Transactions on Computer Systems A ...
- 基于安卓高仿how-old.net实现人脸识别估算年龄与性别
前几段微软推出的大数据人脸识别年龄应用how-old.net在微博火了一把,它可以通过照片快速获得照片上人物的年龄,系统会对瞳孔.眼角.鼻子等27个“面部地标点"展开分析,进而得出你的“颜龄 ...
- Android NDK 学习之传递类对象
本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse-> ...
- 在android中如何通过点击edittext之外的部分使软键盘隐藏
我们知道在android中点击edittext框就会自动弹出软键盘,那怎么通过点击edittext之外的部分使软键盘隐藏呢?(微信聊天时的输入框就是这个效果,这个给用户的体验还是很不错的) 首先我们要 ...
- 将XmlDocument转换成XDocument
XmlDocument xml=new XmlDocument(); xml.LoadXml(strXmlText); XmlReader xr=new XmlNodeReader(xml); XDo ...
- WebService基于SoapHeader实现安全认证
本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使 ...