-
指针也是一种变量,占有内存空间,用来保存内存地址
测试指针变量占有内存空间大小
-
*p操作内存
在指针声明时,*号表示所声明的变量为指针
在指针使用时,*号表示操作指针所指向的内存空间中的值
*p相当于通过地址(p变量的值)找到一块内存;然后操作内存
*p放在等号的左边赋值(给内存赋值)
*p放在等号的右边取值(从内存获取值)
-
指针变量和它指向的内存块是两个不同的概念
//含义1给p赋值p=0x1111;只会改变指针变量值,不会改变所指的内容;p = p +1; //p++
//含义2给*p赋值*p='a';不会改变指针变量的值,只会改变所指的内存块的值
//含义3 =左边*p表示给内存赋值, =右边*p表示取值含义不同切结!
//含义4 =左边char *p
//含义5保证所指的内存块能修改
-
指针是一种数据类型,是指它指向的内存空间的数据类型
含义1:指针步长(p++),根据所致内存空间的数据类型来确定
p++=è(unsigned char )p+sizeof(a);
结论:指针的步长,根据所指内存空间类型来定。 -
注意: 建立指针指向谁,就把把谁的地址赋值给指针。图和代码和二为一。
不断的给指针变量赋值,就是不断的改变指针变量(和所指向内存空间没有任何关系)。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//指针做函数参数 形参有多级指针的时候
//站在编译器的角度:只需要分配4字节的内存(32bit平台上)
//只有当我们使用内存的时候 我们才关心指针指向的内存 是一维的还是二维的
void main()
{
//1.指针是一种数据类型
// 指针也是一个变量 占有内存空间,用来保存内存地址
//在指针声明时,*号表示所声明的变量为指针
//在指针使用时,*号表示 操作 指针所指向的内存空间中的值
//*p相当于通过地址(p变量的值)找到一块内存;然后操作内存
//*p放在等号的左边赋值(给内存赋值)
//*p放在等号的右边取值(从内存获取值)
//*相当一把钥匙 通过一个地址(&a) 去修改a变量标示的内存空间
int a = 10;
//不断的给指针赋值 相当于不停的改变指针的指向
//指针是一种数据类型,是指 它指向的内存空间的 数据类型
//含义1:指针步长(p++),根据所致内存空间的数据类型来确定
//结论:指针的步长,根据所指内存空间类型来定
int* p3 = NULL;
p3 = &a;
*p3 = 20;
//int* p1 = 100;//只是告诉编译器分配四个字节的内存
system("pause");
}