zoukankan      html  css  js  c++  java
  • 指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?

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

    代码如下:

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

    运行结果如下:

    第二个代码

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

    运行结果如下:

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

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


     

     

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

    1 #include <stdio.h>
    2 #include <stdlib.h>
    3 int main(){
    4 printf("%d
    ", sizeof(float *));
    5 return 0;
    6 }

    运行结果如下:

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

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

  • 相关阅读:
    HTML4如何让一个DIV居中对齐?float输入日志标题
    HTML3层叠样式表
    面向对象 学生考试计分题目
    C#总复习
    HTML2列表表单框架
    HTML1网页三部份内容
    HTML 5 JavaScript初步 编译运行.doc
    初识MYSQL
    数据库设计
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/hetaoyuan/p/10063559.html
Copyright © 2011-2022 走看看