相信很多小伙伴们学习C语言时候对指针的概念都是模糊的吧,哈哈哈哈哈哈不才也是一样,所以在深入学习指针或者C语言时候咱们要弄明白什么是指针
目前创新互联已为上千多家的企业提供了网站建设、域名、网页空间、网站托管维护、企业网站设计、秀峰网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。正文开始
指针就是地址
在C语言中,变量等一切物体都有存储字节的空间(现默认一个空间为一个字/8个bit),每一个空间都有地址,而指针存储的就是地址。指针需要多大空间,取决于地址需要多大空间。
而指针存储的就是地址。指针需要多大空间,取决于地址需要多大空间。
而指针存储的就是地址。指针需要多大空间,取决于地址需要多大空间。
重要的事情说三遍!!!
有的小明就会问了,不才你怎么知道变量等一切物体都有存储字节的空间呀,我不信
那我们就举下面例子来说明
int main(){
int a = 10; //a在内存中要分配空间的 - 4个字节
printf("%p\n",&a);//%p是专门用来打印地址
return 0;
}
那么在这个函数输出的一大串内容就是a的地址
譬如上面的0097FA34就是变量a的地址
指针变量的声明在了解指针变量的声明前,咱们先了解 '&'这个单目操作符。
‘&’单目操作符名为:取地址符。用于取出后面紧跟的变量地址如上面的"&a",取到的是a变量的地址。
咱们通过例子来理解怎么定义指针
例1:
int main(){
int a = 10; //a在内存中要分配空间的 - 4个字节
printf("%p\n",&a);//%p是专门用来打印地址
int *pa = &a;//pa是用来存放地址的,在C语言中pa就是指针变量
//上面有*说明后面变量为指针
// *说明了pa是指针变量,int说明了pa执行的对象是int类型
return 0;
}
在上面例子中 *说明了pa是指针变量,int说明了pa执行的对象是int类型!
例2:
int main(){
char ch = 'w';
char *pc = &ch;//pc是用来存放地址的,在C语言中pc就是指针变量
//上面有*说明后面变量为指针
// *说明了pc是指针变量,char说明了pc执行的对象是char类型
return 0;
}
在上面例子中 *说明了pc是指针变量,char说明了pc执行的对象是char类型
指针的初步使用在了解指针变量的声明前,咱们先了解 '*'这个单目操作符。
‘*’单目操作符名为:解引用操作符。可以通过地址找到对应的存储空间进行修改内容。
咱们也是通过例子来理解如何初步的使用指针
例1:
int main(){
int a = 10;
int *pa = &a;
*pa = 20;// *pa就是通过pa变量的地址找到a变量 即把20赋给了a
return 0;
}
下面这张图作为辅助理解
蓝色线为第3行的运行步骤:第一步 把a 的内存提取出来,第二步 把a的内存赋值存入pa的指针变量中
紫色线为第4行的运行步骤:第一步用 '*' 解引用操作符来通过pa变量的地址找到a变量, 第二步进行赋值 *pa = 20 即把 a改为20。内存中存储的是二进制,补码储存。
总结(不才经典大白话)关于指针的定义和细节咱们用一个例子来总结
int main(){
int a = 10;
//下面我们开始定义一个关于a的指针
//int pa 要怎么和系统说明咱这个pa是指针呢?
//int *pa 在pa前加一个'*'说明pa为指针
int *pa = &a; //即为在pa中存了a的地址
*pa = 20; //因为pa是一个地址所以在前面加了'*','*'是解引用操作符,解开了pa的地址,所以*pa就为a。那么这代码等同为:a = 20。
return 0;
}
指针就是地址:指针其实是个变量(指针变量),这个变量存放的是地址,所以称为指针就是地址。(存放在指针中的值都被当成地址处理)。
int a = 10; // a是整形变量
int *p = &a; // p是指针变量
指针的大小:在32位平台是4个字节,在64位平台是8个字节
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前标题:【C语言】第一章·第九节初识指针-创新互联
文章地址:https://www.cdcxhl.com/article20/dddsjo.html
成都网站建设公司_创新互联,为您提供网站收录、标签优化、外贸建站、微信小程序、虚拟主机、服务器托管
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联