【C疯狂的教材】(九)C语言指针(一)
1、什么是地址?
内存是由若干个1个字节的内存单元组成的存储器
计算机为了管理内存单元。给每一个字节都进行编号
编号的就是地址
2、什么是指针?
地址就是指针
地址:
地址指向的内存单元值:编号相应的存储内容
变量訪问的方法:直接訪问
间接訪问
1)直接訪问:用变量名訪问其代表的存储空间
2)间接訪问:通过内存地址訪问地址所相应的存储单元的内容
3、指针和变量之间的关系
指针能够间接的訪问变量的值
1)指针变量:就是用来存放地址的变量
指针变量也遵守变量使用的规则
:先定义 --->初始化 -->使用
2)怎样定义一个指针变量
数据类型*
指针变量名;
int *p;
//变量名 p
//int表示什么意思?
表示指针变量仅仅能存放一个整型数据的地址
//* 什么意思? int p;//普通的整型变量,int *p;//指针变量
3)指针变量初始化
为什么要进行初始化?
首先,假设普通的一个变量没有初始化,会有什么后果? //垃圾值
对于指针变量。int *p; //p
随机的。p 0xff1111 10
*p = 10; //假设不初始化直接使用。可能会导致系统崩溃
野指针:定义之后,没有初始化
(1)定义的同一时候进行初始化
int *p=NULL; //赋值为NULL ,表示谁都不指
int *p1 = 0; //同上
int a=10;
int *p2=&a;
int *p3=&a;
int *p4 = p2;
p3 = p4; //指针的指向能够改变
(2)先定义。后出初始化
int *p;
p = NULL;
int *p1;
p1=&a;
注意:
1)多个指针能够指向同一个变量
2)指针的指向是能够改变的
3) int *p; p = 100;//错误的
存放的时地址,如今给的时整数值
4)*p = &a;错误 //*p是整型的变量。仅仅能赋值数值
3)使用指针变量间接的訪问变量值
int *p = &a;
*p 就是訪问p中存放的地址代表的存储空间的值
p指向的存储空间的值
4、指针的应用场景
1)在被调函数中,改动主调函数的变量值
2)能够让函数有多个返回值
5、指针变量为什么要区分类型
前提:不同类型的指针变量在内存中占用8个字节
为什么都占用8个字节还要区分类型呢?
char *c; //c存放的时地址 *c
从c存放的地址開始
,连续取1个字节
int *p; *p 从p存放的地址開始
,连续取4个字节
int a=10;
char *c2 = &a; //从变量a的首地址開始。取了1个字节(实际4个,取少了)
double *d1 = &a; //从变量a的首地址開始,取了8个字节(实际4个,取多了)
6、多级指针介绍
二级及以上的指针
一级:指针指向的是一个基本数据类型变量的地址
二级:指向的又是一个地址
int a = 10;
int *p = &a; //p是一级
int **p1 = &p; //p1 ---> p p1是二级
7、指针和数组之间的关系
1)数组指针:
指向数组元素的指针变量
int a[5]; //a[0] a[1] 直接訪问
目标:用地址也能够訪问数组元素
(1)数组名訪问
a存放的是数组的首地址(常量) == &a[0]
*a == a[0]元素的值
a+1 指向数组的下一个元素
a-1 指向数组的上一个元素
*a+1 == a[0]+1;
*(a+1) == a[1]元素的值
int *p; //指针变量
p = a; //p指向了数组a的第一个元素
p = &a[0];
p+1 指向数组的下一个元素
p-1 指向数组的上一个元素
*p == a[0]元素的值
*p+1 == a[0]+1;
*(p+1) == a[1]元素的值
p = p+1; //p移动到了下一个元素
p++;
*p++ == *(p++) == *(p = p+1)
2)指针数组:
指针数组:数组的每个元素都是一个指针
int a[2][3]={1,2,3,4,5,6}; // a[0] 1,2,3 a[1] 4,5,6
int *pa[]={a[0],a[1]};
printf("%d\n",**(pa+1)); //4
版权声明:本文博主原创文章。博客,未经同意不得转载。
【C疯狂的教材】(九)C语言指针(一)的更多相关文章
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
- C语言指针【转】
一.C语言指针的概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细 ...
- 2-Linux C语言指针与内存-学习笔记
Linux C语言指针与内存 前面我们对于: c语言的基本用法 makeFile文件的使用 main函数的详解 标准输入输出流以及错误流管道 工具与原理 指针与内存都是c语言中的要点与难点 指针 数组 ...
- C语言指针学习总结
上学的时候学习C语言,最烦的就是里面指针,可是指针也恰恰是C语言的灵魂. 最近在重温数据结构的内容,因为大多数据结构的教材都是用C语言描述的,而数据结构中也大量的用到了指针的内容,所以我就在这篇笔记中 ...
- C语言指针专题——指针难学的4点原因
前一篇跟大家聊了聊指针的概念,可是就算了解了指针是什么,为什么依然感觉难学?我试着从几个点切入,聊聊指针难学之处. 文末会给大家推荐几本书,有需要的朋友可以看看! 难点1. 讨厌的星号 定义指针变量p ...
- 难搞的C语言指针你搞懂了多少
C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...
- 最容易出错的C语言指针
C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...
- C语言指针转换为intptr_t类型
1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...
- 不可或缺 Windows Native (7) - C 语言: 指针
[源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...
- C语言指针学习
C语言学过好久了,对于其中的指针却没有非常明确的认识,趁着有机会来好好学习一下,总结一下学过的知识,知识来自C语言指针详解一文 一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址. ...
随机推荐
- 在Debian Wheezy 7.3.0上编译安装3.12.14内核
最近需要对Linux的一个内核模块进行调整实验,故决定先在虚拟机中完成编译调试工作,最后再在真实的系统上进行测试.为了防止遗忘,把过程记录于此. 1. 准备系统环境 首先从官网下载最新版的Virtua ...
- 第四章 Activity和Activity调用栈分析 系统信息与安全机制 性能优化
1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重新回到前台状态的时候会先调用onRestart方法,然 ...
- 在div+css中用到的js代码注意return
今天做了一个项目,美工做好后放在了form中(没有加runat=server),由于用到了服务器控件,所以这里要加,否则报错,关键一段div代码是: <form id="form_re ...
- (转)asp.net(C#)手记之Repeater与两级菜单
先来张图片说明下我们要实现的菜单: 这个菜单只实现了2级哈. 我采用的方法是嵌套2个Repeater. 先看下数据库中的表结构: 数据: 上代码: aspx: <asp:Repeater ID= ...
- php连接mysql的一些方法总结
为了能让PHP连接MSSQL,系统需要安装MSSQL,PHP,且在PHP.ini中的配置中,将 ;extension=php_mssql.dll前面的;去掉 1.连接MSSQL ...
- sublime3配置及插件安装
1.下载https://github.com/wbond/sublime_package_control中的zip文件,解压后将文件夹名更改为Package Control. 2.将1中的文件夹放入s ...
- JavaScript学习笔记(三十八) 复制属性继承
复制属性继承(Inheritance by Copying Properties) 让我们看一下另一个继承模式—复制属性继承(inheritance by copying properties).在这 ...
- web标准(复习)--4 纵向导航菜单及二级弹出菜单
今天我们开始学习纵向导航菜单及二级弹出菜单,包含以下内容和知识点: 纵向列表 标签的默认样式 css派生选择器 css选择器的分组 纵向二级列表 相对定位和绝对定位 一.纵向列表纵向列表或称为纵向导航 ...
- ShopEx访问提示Incompatible file format: The encoded file has format major ID 2, whereas the Loader expects 4
今天测试了下ShopEx程序,但是ShopEx安装时(程序放在public_html目录下的test目录中)遇到了问题,提示错误如下:Fatal error: Incompatible file fo ...
- memcached学习笔记——连接模型
文章链接:http://www.hcoding.com/?p=121 个人站点:JC&hcoding.com memcached是什么呢?memcached是一个优秀的.高性能的内存缓存工具. ...