2015.08.20情人节--指针

转自:http://blog.csdn.net/qq_31810357

1、内存中的最小存储单元叫字节,为了方便我们操作内存中的数据,生产商对每一个内存中的存储单元进行编号,这个编号叫做地址,地址其实就是指针,指针其实就是地址;

2、 // &   取地址符号//&a  取到a的地址,并返回//  %p是地址的占位                                                                   printf("%p\n",&a);//a空间内存的首地址.

3、 /指针变量定义的格式
    //类型修饰符  *指针变量名 = 初始值;//在定义指针变量的时候*就是一个指针的标示符,告诉编译器这是和指针变量
    int *p = NULL;//最小的地址单位0x0
    printf("%p\n",p);
    //取出变量b的地址赋值给指针变量p
    p = &b;

    printf("p地址 = %p   b地址 = %p\n",p,&b);

4、指针常见的问题

    //内存编号比较小的内存单元是有系统控制的,不允许访问

//    int *p = NULL;

//    *p = 10;    error!!!

定义指针的时候一定要赋初始值,如果不赋初始值,这个指针就是野指针,操纵野指针是很危险的;

//    int *p

//    *p = 100;

  int *p3 = NULL;//苹果写法推荐写法;因为苹果公司就是这么写的;

5、 //p + 1  ++ p  p ++  的关系
    //相同:取到的都不是下一个空间的首地址

    //不同:p + 1没有造成指针的重指向,++p  和 p++  造成了指针的重指向

时间: 2024-08-03 16:43:45

2015.08.20情人节--指针的相关文章

2015.08.25函数指针

1.函数指针: 指向函数的指针就叫函数指针,由于函数名以存储名就是函数的首地址,即函数指针时指向函数名的指针2.格式: 指针类型修饰符  * 指针变量名  = 初始值:3.函数指针确定的步骤://第一步:将函数名去掉,用小括号星(*)替代//    void (*)();   int (*)(int a,int b);//第二步:若有参数,将参数名去掉,只保留参数类型: //  void (*)();   int (*)(int ,int );4.   //定义函数指针变量需要注意的内容:1:确

2015.08.21 结构体指针

   1. //整形指针指向整型变量的指针    int *p = NULL;//指针的标识,告诉编译器这是个指针变量     int a = 10;     p = &a;        printf("%d\n",*p);//取出指针变量p指向内存中的值   *p = 20;//*向指针变量p指向的内存中存储数据    //浮点型指针:指向浮点型变量指针:   float *p1 = NULL;   float b = 3.14;    p1 = &b;   pri

2015.08.24内存分区

  1.//内存区域的划分(从低到高)     //1.栈区     //2.堆区++++++++++++++重点+++++++++++     //3.静态区(全局区)     //4.常量区     //5.代码区 2.static int number = 10;//被static 修饰的全局变量生命周期随着程序的创建而创建,随着程序的消失而消失: 3.//局部变量:定义在函数内部的变量就叫做局部变量,局部变量都是存储在栈区 3.//内存管理的时候系统也是遵循内存对齐原则,因为这样可以提高

2015.08.17多维数组和字符串的访问

1.多维数组:每多一个维度,就会出现一个更大的容器去装裹之前的维度 注意:有几维就由几个for进行嵌套循环,通常使用一维和二维较多 定义二维数组的步骤: 类型修饰符 数组名[常量表达式1][常量表达式2] = {初始值}; 2. 不管是几维数组,数组都是不能直接拿来运算,访问二维数组元素使用双下标 定义二位数组的时候可以不指定第一维的长度,但是必须要给定第二维得长度 行数 = 元素个数 除以 第二维长度  若没有余数,结果就是行数:若有余数,(结果+1)等于行数 3.元素个数 =各维数乘积: 4

2015.08.14数据类型

sizeof(数据类型/变量名)计算数据类型在内存中所占的字节数的运算符:     //计算int类型那个的字节数//   unsigned long size = sizeof(int);//sizeof 的返回值是无符号长整型//    printf("size = %lu\n",size);//无符号长整型的占位符是%lu://    //    int num = 10;//    size = sizeof(num);//使用变量名计算数据的长度//    printf(&q

阿里云accessKey如何创建?~ 2015.08.25

选择导航条上面的ACCESSKeys(工单服务左边,我一开始也没注意到) 创建一下,然后同意   验证一下 收工

2015.08.26枚举

 1.枚举:就是将人能是别的字符跟计算机能是别的数据结合起来,就叫枚举:枚举:罗列所有可能的字符,能使用枚举说明这些可能的字符是有限的,而不是无限的.   //枚举不能为空 2. 枚举值所对应的整数数值,如果不给枚举值赋值,以系统为准,默认枚举值是从0开始,如果这是给枚举赋值,它之前的枚举值按系统默认赋值,它之后的枚举值是从我们赋值的位置开始逐个递增: ---------------------------- 以下举例说明用途: 1.枚举enum的用途浅例       写程序时,我们常常需要为某

招聘专题1-新浪微博职位2015.4.20

一.前言 来自新浪微博的职位,大家感兴趣的可以联系HR. 二.职位描述 职位1.架构师 岗位职责: -负责微博私信IM与Push系统核心研发与维护工作: -负责微博私信IM与Push系统架构设计与调优:   任职要求: -熟练掌握C.C++.Java.Go.Erlang等任一高级语言: -熟练掌握Python.PHP等任一脚本语言: -熟练掌握bash.awk等服务端脚本: -熟悉常用数据结构和算法: -熟悉Linux开发环境,有多线程(进程)编程经验,了解内存池: -熟悉TCP/IP协议,有s

Linux-0.0.1内核阅读连载笔记-2013.08.20

---------------------------------------------------------------------------------- ../init/main.c ---------------------------------------------------------------------------------- /**  *本句的作用是打开 unistd.h 中定义的宏变量 _syscall0() 等  */ #define __LIBRARY__