- 指针变量也是一种数据类型,占有内存空间,用来保存内存地址 对于32位,就是4个字节,要是64位,就是8个字节
- *p操作内存
- 指针释放完,free(p) 要赋空, 否则p还存着之前的内存地址,就会变成野指针,最好是0或者NULL
- 指针变量和它指向的内存块是两个不同的概念
- 规则1:给p赋值p=0x1111,只会该改变变量指针的值,不会改变所指向的内容;
- p=p+1;或者 p++;
- 规则1:给p赋值p=0x1111,只会该改变变量指针的值,不会改变所指向的内容;
2. 规则2:给*p赋值*p=‘a’,不会改变指针变量的值,只会改变所指向的内存块
3. 规则3:=左边*p 表示给内存赋值,=右边*p便是取值,含义不同
在指针声明时,*号表示所声明的变量为指针
在指针使用时,*号表示操作指针所指向的内存空间的值
*p相当于用过地址(p变量的值)找到一块内存,然后操作内存
指针就是一种变量类型,只不过,它存的时地址,而别的变量类型如int或者char就是存对应的char型和int型变量。
指针易错点:
1 操作内存块,要保证那块内存是可以修改的,就是 可读和可写 2 指针是一种数据类型,指针步长(p++),取决于指针存的地址的类型,要是int,就是4,要是char就是1,要是double就是8或者等等。 3 p++等价 p+sizeof(a) 4 5 当我们不断给指针变量赋值时,就是不断该百年指针变量,但是注意,我们并没有改变存数据的那块内存,指针指向谁,就是把谁的地址给他 6 7 不允许向NULL或者未知非法地址拷贝内存
其他知识:
1 通过指针可以给变量间接赋值 2 通过指针,传给函数,用形参改变实参的值,(如果想通过函数改变实参的值,就得传实参类型的指针) 3 间接赋值是指针存在的最大意义 4 二级指针: