首页 > 其他分享 >C语言指针的感悟

C语言指针的感悟

时间:2023-04-26 22:36:50浏览次数:39  
标签:感悟 字节 int C语言 00000000 地址 指针

写这篇文章要感谢(微信公众号  C语言与CPP编程 里 C++ 指针详解)

此处我写的就是看过那篇文章后的一点启发(例如:如何取出一个4个字节int类型数的第三个字节存储的内容之类的问题)

#include<iostream>
using namespace std;
int main(){
    int m = 65536;
    char* p = (char*)&m;
    cout<<"第一个字节的内容: "<< (*p - NULL) << endl;
    cout<<"第二个字节的内容: "<< (*(p + 1) - NULL) << endl;
    cout<<"第三个字节的内容: "<< (*(p + 2) - NULL) << endl;
    cout<<"第四个字节的内容: "<< (*(p + 3) - NULL) << endl;
    return 0;
}

此代码的结果为: 

 

 解释: 65536 四个字节分别为 00000000 00000001 00000000 00000000(从左到右 是从高位到低位)   故输出的结果为 0 0 1 0

这里多说一句:其实你定义一个指针变量,然后为它赋予一个地址,他就会指向从那个地址开始然后加上sizeof(你定义的指针变量)这块内存。

(你可能会说 整形指针不是必须要指向一个整形的地址吗?  其实不然 不管是什么类型的指针变量,你只要给他赋给一个地址,她便会指向你给的地址为起点然后加上sizeof(你定义的指针变量)这块内存。

OK!!!!  最后还是强烈建议大家去看看那个公众号的文章——————————真心不错!!!!

标签:感悟,字节,int,C语言,00000000,地址,指针
From: https://www.cnblogs.com/fighting-huihui/p/17357587.html

相关文章

  • 构建之法阅读笔记与感悟06
    9.1PM是啥软件团队里除了能写代码、测试代码和画图做设计的成员,还有一类角色,不做上面这些事情但也很重要,我们叫他们项目经理——PMPM的M就是Manager,但是P有这几种:ProductManager、ProjectManager、ProgramManager,在不同的行业和公司,他们的作用各不相同。接下来介绍的是项目经......
  • [每天例题]蓝桥杯 C语言 顺子日期
    顺子日期题目https://www.lanqiao.cn/problems/2096/learning/?page=3&first_category_id=1&sort=students_count&difficulty=30 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456等。顺子日期......
  • c语言趣味编程(8)冒泡排序
    一、问题描述对n个整数进行升序排列(数据由键盘键入)二、设计思路(1)读取从键盘键入的n个数据,存入数组a中;(2)用for循环对数组a中的数据进行遍历,并用if语句来判断大小,按从小到大存入;(3)遍历输出数组中已经完成升序排列的数组元素;三、程序流程图 四、伪代码五、代码1#include......
  • 《C# in depth》第5章C#5.0中的更改(十二)——指针和非安全编码
    指针类型是一种C#5.0中引入的不安全代码特性,它允许程序员直接访问内存地址,以及使用指向变量和对象的指针。指针类型可以帮助程序员处理一些高性能场景,例如在大型数组中查找数据。指针类型需要使用unsafe关键字定义,表示这段代码中存在潜在的危险操作。在unsafe代码块中,可以......
  • 12 | C语言中的函数类型和函数指针类型
    函数类型和函数指针类型的区别,让我们先看一个例子#include<iostream>usingnamespacestd;typedefint(Func)(int);typedefint(*Func_p)(int);intf(inta){returna;}intmain(){Func_pp=f;Func*p_ptr=f;cout<<p(0)<<endl;cout<<p_ptr(1)......
  • pid算法函数实现,c语言版
     #include<stdio.h>floatpid(floatsetpoint,floatprocess_variable,floatkp,floatki,floatkd,floatdt,float*integral,float*last_error){//Calculateerrorfloaterror=setpoint-process_variable;//Calculateintegral......
  • C语言基础知识
    一维数组inta[2]={1,2},一维数组名a代表的是数组第一个元素的地址,不代表数组中所有元素。二维数组inta[3][4]总共是12个元素,可以当作3行4列来看待,这十二个元素的名字依次是:a[0][0],a[0][1],a[0][2],a[0][3]a[1][0],a[1][1],a[1][2],a[1][3]a[2][0],a[2][1],a[2][2],a[2][3]......
  • C语言函数(交换数值问题)
    实现交换a,b的数值:直接法:#include<stdio.h>intmain(){inta=10,b=20,temp=0;printf("a=%db=%d\n",a,b);temp=a;a=b;b=temp;printf("a=%db=%d\n",a,b);}输出为:2010函数法:#include<stdio.h>intmain(){inta=10;intb=20;//交换函数s......
  • c语言中的链接属性和存储类型
    链接属性external属性:不在代码块中的函数和变量在缺省情况下都属于external链接属性。具有external属性的变量或者函数在其他源文件中无论被包含多少次,都指向同一个实体。#a.cintx;-----------......
  • C语言 指针也是数组
    #include<stdio.h>main(){char*p="abcdef";printf("%c",*p);printf("\n%c",*(p+1));printf("\n%c",p[0]);printf("\n%c",p[1]);getchar(); }    ......