指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?
这两天敲代码碰到了一个这样的问题
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1 = ; int* p=&num1;
*p = ; printf("%p\n", &num1);
printf("%d\n", num1);
system("pause");
return ;
}
运行结果如下:

第二个代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1 = ; int* p = &num1;
p = ; printf("%p\n", &num1);
printf("%d\n", num1);
system("pause");
return ;
}
运行结果如下:

通过比较第一个程序与第二个程序差别在于,第一个修改的是*p=20,第二个修改的是p=20,最后打印出来的num1的结果带*p的为20,带p的为10。
这是因为通过*p改变了&num1地址里的变量,而修改p则对地址里的变量的值没有影响。
另外,指针变量长度的计算:
#include <stdio.h>
#include <stdlib.h>
int main(){
printf("%d\n", sizeof(float *));
return ;
}
运行结果如下:

在32为操作系统下,指针变量(char,float,double,int,long)的长度为都4个字节。
64位操作系统下,这些指针变量长度位8个字节。
指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?的更多相关文章
- 栈 堆 stack heap 堆内存 栈内存 内存分配中的堆和栈 掌握堆内存的权柄就是返回的指针 栈是面向线程的而堆是面向进程的。 new/delete and malloc/ free 指针与内存模型
小结: 1.栈内存 为什么快? Due to this nature, the process of storing and retrieving data from the stack is ver ...
- C语言定义结构体指针数组并初始化;里面全是结构体的地址
#include <stdio.h> #include <string.h> struct tells;//声明结构体 struct info { char *infos; } ...
- (Go)09.指针赋值修改示例
答案: 1 package main 2 import ( 3 "fmt" 4 ) 5 6 7 func modify(p *int) { 8 fmt.Println(p) 9 ...
- Hexo折腾记--小白修改新主题
UPDATE 2019.5.28 不好意思我又换了个新主题ARIA啦...这回没有个人定制了 前言 如果您曾经来过我的博客,就会发现我的个人博客(https://rye-catcher.github. ...
- linux centos中添加删除修改环境变量,设置java环境变量
前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...
- 不同类型的指针+1之后增加的大小不同(a,&a的地址是一样的,但意思不一样)
main() { ]={,,,,}; ); printf(),*(ptr-)); } *(a+1)就是a[1],*(ptr-1)就是a[4], 执行结果是2, 5.&a+1不是首地址+1,系统 ...
- 修改arcgis server默认js和css连接地址
当使用ArcGIS Server 10.1发布了一个地图服务之后,在ArcGIS Server 10.1的机器上使用浏览器进入http://localhost:6080/arcgis/rest/ser ...
- 派生类地址比基类地址少4(子类与基类指针强行转换的时候,值居然会发生变化,不知道Delphi BCB是不是也这样) good
大家对虚表并不陌生,都知道每个含有虚函数的类对象都有1个虚指针,但是在现实使用中,却总是因为这而调试半天,才发现原来是虚指针惹的祸.我这几天在调试代码时候也中招了,我的问题是这样的,如下图,CTree ...
- 【漏洞分析】两个例子-数组溢出修改返回函数与strcpy覆盖周边内存地址
修改返回函数 return 0 下面的程序的运行流程为main()函数调用了Magic()函数,通常执行完Magic()函数后会调用return 0 的地址, 但是在执行Magic()函数中时,数组下 ...
随机推荐
- RabbitMq ack 与 nack
1.ack 移除 2.nack 移除再次发送队列
- Python初学者第八天 元组和字典
8day 1.数据类型:元组 元组:有序的,不可变地数据的集合.但若包含其他可变元素,这些元素可变.显示的告诉别人,此处不可修改: a = (1,2,3,4,5,['1','a']) 2.数据类型:字 ...
- Android Studio添加取消代码注释快捷键
经常需要注释,取消注释代码 Ctrl + / 对每段代码前面添加或者取消 // Ctrl + Shift + / 对代码添加 或取消 /* */ Ctrl + B 查找定义 C ...
- python数据处理——numpy
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...
- windows 安装redis并注册服务
windows下载地址 https://github.com/MSOpenTech/redis/releases 启动:redis-server redis.windows.conf ...
- Python之条件判断和循环(入门4)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407755.html 本文出自:[Edwin博客园] Python之条件判断和循环 1. Python之if ...
- 用w32tm设置服务器时间同步
服务器时间同步是一个容易被忽视的问题,但在企业级应用环境中,不同服务器之间的时间差很可能引发应用系统问题.Windows提供的w32tm程序可以用来设置时间同步服务器,其用法如下: 1.指定外部时间源 ...
- IBM websphere MQ远程队列的简单配置
原理: 1.远程队列分发送方和接收方 2.接收方配置: 接收方配置要先拿到对方的发送通道配置,接收方的队列名称必须和远程发送方的队列名称一致,告诉远程发送方,你的地址,队列管理器名称等信息,在通道中建 ...
- ListView实现下拉刷新(三)实现下拉刷新
该准备的东西都已经准备好了.在这篇文章里,我们就开始实现下拉刷新功能吧. 一.大体的逻辑分析 我们来简单分析一下需要做的逻辑吧.首先分析头布局有几种状态.不下拉时,为正常状态,此时头布局隐藏.下拉到一 ...
- PHP------文件------文件整体操作
文件整体操作 [1]创建文件 touch("路径"); touch("./test.docx");//当前路径创建文件,创建的文档 显示的结果: touch ...