dw做asp购物网站,定制高端网页,建设h网站风险大吗,做美食下载什么网站文章目录内存结构地址就是指针为什么地址就是指针#xff1f;指针#xff1a;地址的外号变量空间开辟于内存1.所开辟的空间字节数1字节2.变量的每个字节都一个地址3.变量的第一个字节的地址代表整个变量的地址4.如何使用变量的指针找到整个变量空间#xff1f;变量…
文章目录内存结构地址就是指针为什么地址就是指针指针地址的外号变量空间开辟于内存1.所开辟的空间字节数1字节2.变量的每个字节都一个地址3.变量的第一个字节的地址代表整个变量的地址4.如何使用变量的指针找到整个变量空间变量指针就是一个数如何使用一个数据一级指针与一级指针变量什么是一级指针什么是普通变量普通变量指针的类型使用指针访问变量空间使用指针访问空间如何找到a变量地址然后读、写a变量地址使用指针操作a变量空间*的两种用途指针的好处传递指针传递普通数值与传递指针的异同指针的含义连续内存内存单一内存结构
内存是由字节组成的 每个字节都有一个地址
地址就是指针
地址的别称就是指针
为什么地址就是指针
因为地址有指向作用通过这个地址可以找到某个字节空间然后操作读、写字节空间因为地址有指向作用因此我们也称地址为指针。
举个例子 称门牌号为指针因为门牌号指向了某个房间当然我们可以称自己家的地址为指针因为我家的地址指向了我家根据门牌号和地址的指向可以找到某个房间和我家带有指向作用的是指针。
指针地址的外号
变量空间开辟于内存
1.所开辟的空间字节数1字节
比如
char型变量 1个字节
short型变量 2个字节
int型变量 4个字节
float型变量 4个字节
double型变量 4个字节sizeof是运算符不是函数
2.变量的每个字节都一个地址
3.变量的第一个字节的地址代表整个变量的地址
即变量的指针就是变量第一个字节的地址 使用变量的地址第一个字节的地址找到相应的变量空间进行操作读或写变量空间
4.如何使用变量的指针找到整个变量空间
a.通过变量指针找到变量的第一个字节 b.根据变量的类型得到变量所占的总的字节从第一个字节往后数找到变量空间所有字节
变量指针就是一个数
a. 指针这个数好比门牌号 指针就是一个数只是这个数有点特殊它是一个地址 门牌号是房间的地址用来指向某个房间。 b. C语言采用什么方法得到一个变量的指针 方法使用取地址符
int a;
a //表示a变量的第一个地址即a变量的指针。
printf(%p\n,a); //16进制打印提示 打印一个变量的指针这个数时可以采用%d方式打印这也说明指针是一个比较特殊的整形数但是你又不能说它是整形数它是一个地址我们也可以用%p这个是地址专用的16进制打印形式打印结果
int a a指的是一个变量空间我们可以向空间读写数据 a指的是一个数是变量a的指针或者第一个字节的地址。
如何使用一个数据
a. 使用普通的整形数
直接使用 比如 printf(%d,10);
间接使用 先把这个数放到对应类型的变量中通过使用变量来使用这个数 正常情况下在不涉及类型转换时我们要求将某个类型的数据放到对应类型的变量中要求类型必须保持一致
b.使用变量指针这个数 直接使用
int a10;
printf(%d,a);间接使用 先把这个指针数放到一个变量中然后通过这个变量使用这个数 存放指针这个数的变量就是指针变量。
int a10;
printf(%d\n,a);
int *pa;
printf(%d\n,p);
return 0; 一级指针与一级指针变量
什么是一级指针 a.指针地址就是指针指针是地址的别称指针是一个数是一个字节的门牌号地址。b.变量的指针变量空间的第一个字节地址c.什么是一级指针所有普通变量的指针就是一级指针什么是普通变量
只要在变量的声明或定义中没有*的变量就是普通变量 例如int a;
普通变量指针的类型
指针的等级
一级* 类型
二级** 类型
三级*** 类型一般不会超过三级 一级指针表示指针指向一个普通变量 char aa;a; //普通变量a的指针表示第一个字节的地址char*类型char型一级指针类型*表示一级char表示这个指针指向的变量空间是一个char型变量空间使用指针访问变量空间
使用指针访问空间
a //一个数表示a变量的第一个地址即a变量的指针门牌号
int *pa;//表示定义一个整型的一级指针变量用于存放整形一级指针数
int *paa;如何找到a变量地址然后读、写a变量地址
1.直接通过变量名进行操作 写数据a100 读数据int b; ba;
使用指针操作a变量空间
写数据
*pa200; //等价于a100读数据
int b*pa; //等价于int ba;
此时*pa代表的就是a变量空间我们可以对其读写
这里的*找空间操作找到指针变量pa里面存放的指针数据所指向的空间。*的作用就是找到指针指向的空间。
*的两种用途
定义指针变量时使用比如
int *pa; //定义一个int型的一级指针*表示定义的是指针变量一个*表示一级指针变量2.访问空间时使用*
int a;
int *paa;
*pa100;//*找空间操作找到pa这个指针变量里面放的指针所指向空间*pa代表指针指向空间指针的好处
int a10;
int *paa; //pa里面放的是a的门牌号a100; //使用变量名a访问变量空间写空间把100写入
int ba;//使用变量名a访问变量空间读空间将空间里面存放的数读出赋值写给b*pa200; //等价于a200*pa代表的就是a空间然后对其进行写操作
b*pa; //等价于ba,*pa代表的就是a空间然后从a空间读数据写入b变量传递指针
#includestdio.hvoid fun(int *pa,float *pb) {*pa200;*pb300.60;}
int main() {int a10;float b0.56;fun(a,b);printf(in main a%d\n,a);printf(in main b%f,b);return 0;
}等价于
#includestdio.h
#includestring.hvoid fun(int *pa,float *pb) {*pa200;*pb300.60;}int main() {int a10;float b0.56;
// fun(a,b);int *paa;float *pbb;fun(pa,pb);printf(in main a%d\n,a);printf(in main b%f,b);return 0;
}传递普通数值与传递指针的异同
1相同点 都是将实参的数赋值给形参变量。 2区别 前者传递的是一个普通的数后者传递的是门牌号即地址指针可以通过地址操作它指向的变量空间。
指针的含义
a.指针是一个数 指针是一个地址变量的指针指的都是变量第一个字节的地址。 地址指针具备指向作用
b.指针变量 指针变量是一个变量用来存放指针地址指针变量不具有指向作用指针变量只是用来存放地址。指针变量因为存放地址才有了指向作用指针变量存放的指针具有指针作用 指针和指针变量是两个不同的概念只是约定俗成习惯统一称为指针。
提示 当一个指针变量里面存放指针这个数后即这个指针变量指向了某个空间但是你自己应该非常清楚本质并不是指针变量指向某个空间而是这个指针变量内存放的指针指向某个空间。
连续内存
//连续的动态分配
#includestdio.h
#includestdlib.h
int main(){
// int *p(int *)malloc (5*sizeof(int));
// *(p3)3;
// printf(%d,*(p3));int number;printf(input student number:);scanf(%d,number);int *p(int *)malloc (sizeof(int)*number);for(int i0;inumber;i){printf(input %d someones grade:,i1);
// scanf(%d,p[i]);scanf(%d,pi);} //输出for(int i0;inumber;i){printf(%d\t,p[i]);//*stui } printf(\n);return 0;
} 内存单一
//单一元素
#includestdio.h
#includestdlib.h
int main(){int *p(int *)malloc(sizeof(int));*p3;printf(%d,*p);return 0;
}