一、内存

/*

 内存:
存在内存里的。 内存分了N多个小空间,每个小空间1个字节 每个小空间有它自己的地址。每个地址之间差1 int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址,而记住首地址就行了(因为首地址相当于入口或者生活中的门) 指针: 指针就是地址,地址就是指针。 地址:内存的地址 内存中的地址:
其实也是从1开始编号,然后一直自增
1M内存,1024个地址 0x7fff5fbff7cc:这叫16进制 十进制:逢10进1 有:0 1 2 3 4 5 6 7 8 9
逢十进1
9 10 十六进制:就是逢16进1 有:0 1 2 3 4 5 6 7 8 9 a b c d e f 以0x开头
简单说1-10
0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf
16:0x10 0x35:53 0xa0:160 顺带说下:
二进制:0和1
0 1 10 八进制:0 1 2 3 4 5 6 7 */

二、指针变量

/*
指针变量:存放地址的变量。
语法:类型 *指针变量名;
赋值:指针变量名 = 地址;
在声明的时候初始化:类型 *指针变量名 = 地址;
例如:
int num = 20;
int *nump = #//存的是num的地址
打印指针变量:
printf("%p \n %p \n",nump,&num);
注意:定义指针变量,有如下几种方式:
1、类型 * 变量名 ;
2、类型* 变量名 ;
3、类型 *变量名 ;
以上三种都可以,* 代表一个特殊类型。
类型* 构成了类型
*/

上面介绍了怎么去定义一个指针变量,下面介绍怎么使用它。

/*

 使用指针变量

        语法:
*指针变量名; 语义:这就可以访问你所指向的那块空间里的值了 千万要注意:
访问指针变量时加星号和不加星号的区别:
int num;
int *p = # 1.加星号代表,是访问它所指向的空间里面的值。*p 相当于 num; 2.不加星号代表,是访问它自己的空间里面的值。p 就是自己里面存的值 */
//例如: int num = ; int *pNum; pNum = # //注意:&不要省略! printf("%d %d\n",num,*pNum);//所以也就是说,*pNum == num; *pNum = ; printf("num=%d\n",num);// num = ; printf("*pNum=%d\n",*pNum); int num = ; int *pNum = # (*pNum)++; //相当于num++ num=11 num += ; printf("num=%d\n",num);// int num = ; int *pNum = # int *pNum2 = pNum; *pNum2 = ; printf("num=%d *pNum=%d *pNum2=%d\n",num,*pNum,*pNum2);//30 30 30

一定要注意在使用指针变量的时候,加星号(*)和不加星号(*)的区别;同时指针变量也区别类型(区分类型是为了告诉指针,该去读取几个字节)。

什么类型的变量就用什么类型的指针去读取。

下面看一个例子:

int num1 = ,num2 = ;
int *p1 = &num1;
int *p2 = &num2;
int *p3 = p2;
*p2 = ;
p2 = p1;
*p2 = ; printf("num1 = %d num2 = %d *p1= %d *p2= %d *p3= %d ",num1,num2.*p1,*p2,*p3);
/*
有兴趣的可以自己算下。
*/

指针变量作为函数的参数:

/*
语法:
返回值类型 函数名(指针类型* 指针变量名){ } 例如:
void test1(int* num){ } int main(int argc,const char argv[]){
int num = 10;
test1(&num);
}
*/

c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量的更多相关文章

  1. c语言学习之基础知识点介绍(十):数组

    本节主要介绍数组. 一.数组 /* 数组:一个变量可以存n个变量. 语法:类型 数组名[长度(正整数)]; 例如:int score[5];//定义了一个int类型的数组,长度为5,可以保存5个数据. ...

  2. c语言学习之基础知识点介绍(二十):预处理指令

    一.预处理指令的介绍 预处理命令:在编译之前触发的一系列操作(命令)就叫预处理命令. 特点:以#开头,不要加分号. #include: 文件包含指令 把指定文件的内容复制到相应的位置 #define: ...

  3. c语言学习之基础知识点介绍(十五):函数的指针

    一.函数的指针的介绍 /* 函数指针: 函数的指针,本质上一个指针 指向函数的指针,就是一个函数指针. 回忆:我们写的源代码编译成二进制的指令集,一串交给CPU执行的指令 先存在内存里面,然后CPU读 ...

  4. c语言学习之基础知识点介绍(三):scanf函数

    本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...

  5. c语言学习之基础知识点介绍(二):格式化控制符和变量的补充

    上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...

  6. oc语言学习之基础知识点介绍(五):OC进阶

    一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点 ...

  7. oc语言学习之基础知识点介绍(二):类和对象的进一步介绍

    一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...

  8. c语言学习之基础知识点介绍(十一):字符串的介绍、使用

    本节主要介绍c语言中的字符串的应用. 一:字符串介绍 因为c语言中没有像Java.C#那样的字符串类型,所以无法直接用字符串.需要借助数组来解决这个问题. /* 定义:把多个字符连在一起就叫字符串.但 ...

  9. oc语言学习之基础知识点介绍(一):OC介绍

      一.第一个OC程序 #import <Foundation/Foundation.h> //导入头文件 int main(int argc, const char * argv[]) ...

随机推荐

  1. 《C语言程序设计现代方法》第2章 编程题

    7 编写一个程序,要求用户输入一个美金数量,然后显示出如何使用最少的20美元.10美元.5美元和1美元来付款. 提示:将付款金额除以20,确定20美元的数量,然后从付款金额中减去20美元的总金额.对其 ...

  2. Red5 项目的流事件回调流程和注意事项

    回调流程 参考:Red5的一般客户端连接各个事件的触发顺序,经验证实际过程如下: 程序开始(在RED5启动的时候会自动去启动APP,从而触发以上事件) Start:MyChatRoomappStart ...

  3. 哈希(2) hash索引

    首先复习:       索引:快速查找的数据结构 1.可以读以下mysql中索引的使用方法,图文并茂.很好理解. http://www.it165.net/database/html/201310/4 ...

  4. Linux I2C设备驱动编写(三)-实例分析AM3359

    TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 ...

  5. MySQL DBA修炼秘籍

    0.导读 本文主要写给那些立志成为MySQL DBA,以及正在学习MySQL的同行们,结合个人及业内其他同行的职业发展经历给大家一些参考,如何成为合格的MySQL DBA. 1.什么是MySQL DB ...

  6. etc下

    用户账号与密码参数:  /etc/passwd  .  /etc/shadow 用户组相关方面的条件:     /etc/group   .   /etc/gshadow 用户个人文件数据:   /h ...

  7. windows下mysql 控制台操作

    windows mysql 控制台操作 1.首先打开cmd进入dos窗口 2.切换至目录: F: cd PHPnow-1.5.6\MySQL-5.0.90\bin 3.进入mysql: mysql - ...

  8. 使用gulp自动化配置环境变量

    使用gulp拷贝文件,可以完成开发api环境变量的配置,例如公司的线上环境有三个: 1.alpha线上测试环境 2.dev线上测试环境 3.test 本地测试环境 (4.production 正式系统 ...

  9. indexOf()不区分大小写用法

    str.toLowerCase().indexOf(str.toLowerCase())>=0; 对字符串进行统一小写转换. indexOf()查找到返回索引值大于=0; 未找到,返回-1; i ...

  10. 关于PHP程序员解决问题的能力

    这个话题老生长谈了,在面试中必然考核的能力中,我个人认为解决问题能力是排第一位的,比学习能力优先级更高.解决问题的能力既能看出程序员的思维能力,应变能力,探索能力等,又可以看出他的经验.如果解决问题能 ...