c语言指针

2018-07-11  本文已影响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 指针变量写法不同时的区别

上一篇 下一篇

猜你喜欢

热点阅读