基础Day0809(指针)

一个很显然的事实是,sizeof结果类型是size_t,它是无符号的,而%d用来输出int,是有符号的。
64位系统,这个位数指的是CPU 里面的通用寄存器的数据宽度为64位,也就是说一个地址占二进制位数是64,所以:sizeof(double *)==sizeof(int *)==sizeof(char *)64/88
32位系统,同理,它的一个地址占32位二进制空间,sizeof(double *)==sizeof(int *)==sizeof(char )32/84
其实明白了两个系统的寻址原理就能明白,大体就是这个原因。地址跟系统有关,但是基本数据类型占的大小是由C语言本身决定。
无论是什么类型的指针,存的都是地址,内存地址都是无符号整型的,无符号整型在64位操作系统中是8个字节的大小
p是指针变量,用来存放地址,你可以认为是上面所说的盒子的号码,“
”是解引用操作符,你可以把它理解成打开盒子,*p就是打开p号盒子,取出里面的数据。p存放的是地址,*p是让程序去那个地址取出数据。(*取地值符)
基础Day0809(指针)
int *p=&a; (p中存放的是a的地址)
p=&b;(p中存放的是b的地址)
p=200;(修改b的值为200)
基础Day0809(指针)
基础Day0809(指针)
野指针
对一个指向空地址的指针我们将其称为野指针,即所指向的地址不能进行操作的指针
基础Day0809(指针)
空指针
基础Day0809(指针)
万能指针
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
const修饰指针的三种效果:
当用const进行修饰时,根据const位置的不同有三种不同效果。 判断的标准是:const修饰谁,谁的内容就是不可变的。
1 、const int p = &a;
  const修饰
p, p不可变,p是指针,p是指针p指向的内存单元里的内容,p不可变也就是p指向的内存单元里的内容是不可变的。
PS: 这儿
p是不可变的,但是p是可变的,就是p指向的内存单元或者说变量是可以变的,但是p指向谁,谁的值就不可变。
不可变指的是不能用
p改变a的值,但是a自己或者别的指针还是可以修改a的值。
定义形参时,如果不想改变参数的值,可以用const修饰
2 、int
const p = &a;
  const修饰p,指针p是不可变的,也就是p指向的内存单元不可变。即p的指向不可变,p指向的内存单元的内容可以变。
3 、const int
const p = &a;
  *p和p都被const修饰了,所以p指向的内存单元,和p指向内存单元中存放的内容都是不可变的。
  基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
指针和数组
指针是一类特殊的变量,主要用途是函数间的传址,用这种方式来改变实参内容。而数组是用来实现线性表的结构,用于把同类对象集中在一起放置。
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
冒泡排序
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
实现strchr函数
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
字符串反转
基础Day0809(指针)
基础Day0809(指针)
指针数组
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
多级指针
基础Day0809(指针)
基础Day0809(指针)
指针和参数
值传递:实参的值传递给形参,不改变实参的值
基础Day0809(指针)
基础Day0809(指针)
地址传递:可以改变实参的值
基础Day0809(指针)
基础Day0809(指针)
指针作为函数返回值
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
strstr
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
指针
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
指针和字符串
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
实现strcat函数
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
字符串排序
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)
数组(不能把所有的二级指针都当做二维数组来操作,可以把二维数组当做二维指针使用)
基础Day0809(指针)
基础Day0809(指针)
基础Day0809(指针)