C基础知识(4):指针--p=&a和*p=a的区别详解
对于*p,[p = &a]和[*p = a]的区别详解
(1) p=&a就是用a的地址对p赋值,&p不改变,变的是p
(2) *p=a就是把p所指向的那一内存空间的值赋值为a,&p和p都不改变,变的是p所指向的那一内存空间的值
#include <stdio.h> // 对于*p,[p = &a]和[*p = a]的区别详解
int main() {
int init = ;
// p=&a就是用a的地址对p赋值,&p不改变,变的是p
int a = ;
int *p = &init;
printf("[p] = %p; [*p] = %d; [&p] = %p;\n", p, *p, &p); //[p] = 0x7ffe12baad9c; [*p] = 0; [&p] = 0x7ffe12baad90;
p = &a;
printf("[p] = %p; [*p] = %d; [&p] = %p;\n", p, *p, &p); //[p] = 0x7ffe12baad98; [*p] = 10; [&p] = 0x7ffe12baad90;
printf("[init] = %d;\n", &init, init); //0 // *q=b就是把q所指向的那一内存空间的值赋值为b,&q q都不改变,变的是q所指向的那一内存空间的值,即init的值
int b = ;
int *q = &init;
printf("[&b] = %p; [q] = %p; [*q] = %d; [&q] = %p;\n", &b, q, *q, &q); //[q] = 0x7ffe12baad9c; [*q] = 0; [&q] = 0x7ffe12baad80;
*q = b;
printf("[&b] = %p; [q] = %p; [*q] = %d; [&q] = %p;\n", &b, q, *q, &q); //[q] = 0x7ffe12baad9c; [*q] = 20; [&q] = 0x7ffe12baad80;
printf("[&init] = %p; [init] = %d;\n", &init, init); //
return ;
}
代码分析:

C基础知识(4):指针--p=&a和*p=a的区别详解的更多相关文章
- Appium+python自动化(十五)- Android 这些基础知识,你知多少???(超详解)
简介 前边具体操作和实战已经讲解和分享了很多了,但是一些android的一些基础知识,你又知道多少了,你都掌握了吗?这篇就由宏哥给小伙伴们既是一个分享,又是对前边的一次总结.为什么要对这些做一个简单的 ...
- Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程(zz)
授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等). 在权限认证中,最核心的是:主体/用户(Subject).权限(Permission).角色(Role).资源 ...
- Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解
只有一种真正的英雄主义 一.摘要 ObjectAnimator是ValueAnimator的子类,它和ValueAnimator一样,同样具有计算属性值的功能,但对比ValueAnimator,它会更 ...
- Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...
- 大数据入门基础系列之Hadoop1.X、Hadoop2.X和Hadoop3.X的多维度区别详解(博主推荐)
不多说,直接上干货! 在前面的博文里,我已经介绍了 大数据入门基础系列之Linux操作系统简介与选择 大数据入门基础系列之虚拟机的下载.安装详解 大数据入门基础系列之Linux的安装详解 大数据入门基 ...
- Android基础夯实--重温动画(四)之属性动画 ValueAnimator详解
宝剑锋从磨砺出,梅花香自苦寒来:千淘万漉虽辛苦,吹尽狂沙始到金: 长风破浪会有时,直挂云帆济沧海 一.摘要 Animator类作为属性动画的基类,它是一个抽象类,它提供了实现动画的基本架构,但是我们不 ...
- MySQL基础篇(04):存储过程和视图,用法和特性详解
本文源码:GitHub·点这里 || GitEE·点这里 一.存储过程 1.概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行.存储过程 ...
- C语言中 指针的基础知识总结, 指针数组的理解
1: 指针变量所占的字节数与操作系统为位数有关,64位操作系统下,占8个字节,32位操作系统下,占4个字节 2: 指针变量的本质是用来放地址,而一般的变量是放数值的3: 脱衣服法则: a[2] 变成 ...
- C语言基础知识【指针】
2017年7月11日18:33:41C指针 该看地址:http://www.runoob.com/cprogramming/c-pointers.html1.学习 C 语言的指针既简单又有趣.通过指 ...
随机推荐
- Matrix Factorization in RecSys
矩阵分解在推荐系统中的应用. 参考链接:知乎. 传统SVD,Funk-SVD,Bias-SVD,SVD++. SVD奇异值分解及其意义. 漫谈奇异值分解.
- springboot-rabbitmq的使用
一.RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...
- 给零基础的小白从0到1的react-naitve电商app——简单易学!
先上链接https://github.com/duf1991/DY...我的第一个react-native学习成果,欢迎各位大佬star和issue!
- stm32之HAL串口中断的callback流程图
- 返回vector指针案例
void prog1_static(void) { int pos = 9; // elem will hold the element's value vector<int> *elem ...
- yii 上传视频(ajax)
实现一个功能:提交表单的时候,需要上传视频,把视频上传到oss上,然后把url作为表单值传到后端保存到数据库.需要ajax异步实现. 遇到了一个这样报错:Bad Request: 您提交的数据无法被验 ...
- 推荐系统系列(六):Wide&Deep理论与实践
背景 在CTR预估任务中,线性模型仍占有半壁江山.利用手工构造的交叉组合特征来使线性模型具有"记忆性",使模型记住共现频率较高的特征组合,往往也能达到一个不错的baseline,且 ...
- vim8.1安装
win下直接就有gvim8.1.exe安装.但linux下直接从apt-get里面下载的vim都是远古版本,需要手动编译安装. 首先,下载vim源代码 git clone https://github ...
- js保留二位小数
js保留小数常用有三种方法,可根据实际情况选择 方法一:使用toFixed保留两位小数 自带四舍五入与补位 var num1 = 55.3715; console.log(num1.toFixed(2 ...
- yum update 更新失败
1.yum安装东西的时候,老是报:There are unfinished transactions remaining. You might consider running yum-complet ...