美文网首页
c语言指针

c语言指针

作者: 夜沐月 | 来源:发表于2018-07-11 14:40 被阅读5次

    1    概念 

    指针变量也是一个变量,其值是一个整数(整数的大小取决于操作系统的位数,地址虽然是一个整数,但地址是一个特殊的整数,是不能直接通过整数来操作的,*  告诉编译器变量是指向地址的,而不是简单的指向一个整数),指针存放的内容是一个地址,该地址指向一块内存空间(内存的存储最小单位是字节,每个字节都有一个唯一的编号,这个编号就是内存地址)。

    指针定义简单解释 指针定义简单解释 指针定义简单解释

    2 定义

    int a = 10 ;     int *p = &a;  //   其中 int *p = &a 等同于 int *p;  p=&a;  // *p : 指针指向的内存空间存放的值 // int *p 表示定义一个指针变量

    指针使用

    3  注意点

    无类型指针 : 定义一个指针变量,但不指定它指向具体哪种数据类型。可以通过强制转化将 void*转化为其他类型指针,也可以用(void*)将其他类型的指针强制转化为void类型的指针

    NULL在c语言中定义为 (void*)0

    空指针 : 指向NULL的指针 ;

    野指针 :没有具体指向任何变量地址的指针

    野指针举例

    指针的兼容性 :我们可以把一个char*赋值给int*,不可以把一个double*赋值给int*,c语言给警告,c++直接报错

    int a = 0x1234; char *p = &a ;  printf("%x\n",*p);

    char *p = &a ; 会导致数据的丢失

    指针的兼容 指针的兼容

    如何把一个整数的四个字节都取出来?

    取出整数四个字节

    4 指针变量移动时的变化

    int array[100] = [1,2,3,4,5,6];

    int *p = array   // 数组取地址直接用数组名 等同去地址符号 &  等同于 int*p;p=array

    printf("%u\n",p);

    p++; // 指针移动一个int的内存大小,换成其他数据类型相同

    prift("%u\n",p);

    5 指向常量的指针与指针常量

    const

    6 指针运算

    指针运算不是指针对应的整数简单的加减,是指针类型对应数据类型字节数加减

    指针运算 指针运算

    5 指针变量写法不同时的区别

    相关文章

      网友评论

          本文标题:c语言指针

          本文链接:https://www.haomeiwen.com/subject/vshmyftx.html