博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?...
阅读量:4634 次
发布时间:2019-06-09

本文共 919 字,大约阅读时间需要 3 分钟。

这两天敲代码碰到了一个这样的问题

代码如下:

1 #include 
2 #include
3 int main() 4 { 5 int num1 = 10; 6 7 int* p=&num1; 8 *p = 20; 9 10 printf("%p\n", &num1);11 printf("%d\n", num1);12 system("pause");13 return 0;14 }

运行结果如下:

第二个代码

1 #include 
2 #include
3 int main() 4 { 5 int num1 = 10; 6 7 int* p = &num1; 8 p = 20; 9 10 printf("%p\n", &num1);11 printf("%d\n", num1);12 system("pause");13 return 0;14 }

运行结果如下:

通过比较第一个程序与第二个程序差别在于,第一个修改的是*p=20,第二个修改的是p=20,最后打印出来的num1的结果带*p的为20,带p的为10。

这是因为通过*p改变了&num1地址里的变量,而修改p则对地址里的变量的值没有影响。


 

 

 

另外,指针变量长度的计算:

1 #include 
2 #include
3 int main(){4 printf("%d\n", sizeof(float *));5 return 0;6 }

 

运行结果如下:

在32为操作系统下,指针变量(char,float,double,int,long)的长度为都4个字节。

64位操作系统下,这些指针变量长度位8个字节。

 

转载于:https://www.cnblogs.com/hetaoyuan/p/10063559.html

你可能感兴趣的文章
isolate 通信
查看>>
怎么将jenkins打包后的war自动部署到jetty上?
查看>>
#418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)
查看>>
QLocalServer与QLocalSocket进程通讯
查看>>
JavaWeb——jsp-config
查看>>
微信开放平台之公众号第三方平台开发及全网发布验证
查看>>
作业 3 应用分支与循环结构解决问题 统计字符个数
查看>>
Path Sum
查看>>
数据库Mysql的学习(八)-储存过程和事务和导入导出
查看>>
输出n行杨辉三角数
查看>>
VS2010创建ATL类时需要手动填写ProgID
查看>>
让Windows7运行速度更快的BIOS优化设置教程
查看>>
SER SERVER存储过程
查看>>
通过T-SQL语句实现数据库加解密功能
查看>>
VS 类快捷键
查看>>
ThInkPHP验证码不显示,解决方法汇总
查看>>
start_kernel---boot_init_stack_canary<四>
查看>>
tensorflow---alexnet training (tflearn)
查看>>
Dell 戴尔预装Windows8改成Windows7
查看>>
os.system() 和 os.popen()
查看>>