c语言指针

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 指针运算


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


指针运算



指针运算

7 指针数组



8 指针变量作为函数参数


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,794评论 3 44
  • 1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧...
    金巴多阅读 5,830评论 0 9
  • 转自CSDN博客 原文链接:http://blog.csdn.net/xinyuwuxian/article/de...
    傻彬儿阅读 4,212评论 0 0
  • 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存...
    C语言学习阅读 5,069评论 0 4
  • 前言:指针是 C语言一个重要概念,也是C 语言的一个重要特色。使程序简洁、紧凑、高效。指针乃是C之精华。 数据在内...
    潇湘候晨雪阅读 4,112评论 0 0