广西网站建设推广报价莱芜免费发布信息网
2026/4/18 9:46:49 网站建设 项目流程
广西网站建设推广报价,莱芜免费发布信息网,做网站需要什么编程语言,开发小程序多少费用在C中有多种用法#xff0c;这里只讲取地址用法。只能取已经定义的变量的地址。将内存比作宾馆的房间#xff0c;变量就是房间号 int num 10; 你租下了一个房间#xff08;分配了一块内存#xff09;#xff0c;并把数字10放了进去。这个房间现在有了一个临时…在C中有多种用法这里只讲取地址用法。只能取已经定义的变量的地址。将内存比作宾馆的房间变量就是房间号int num 10;你租下了一个房间分配了一块内存并把数字10放了进去。这个房间现在有了一个临时的、由系统分配的门牌号。int *p num; 就像是问管理员“请告诉我num这个房间的门牌号是多少” 管理员告诉你后你得到了地址 。int *p你把这个门牌号记在了便签p上。所以的前提是必须先有一个“房间”变量它才能去获取这个房间的地址。———————————————————————————————————————————C中的*也有多种用法这里只讲解引用、与强制类型转换符配合、声明符。1·声明时*只是表示这是一个指针变量int *ptr;// 声明一个指向整数的指针ptr char *str; // 声明一个指向字符的指针str指针代表的是内存地址而非数值虽然内存地址在底层也是用数字表示的但C语言的高级抽象层面编译器严格区分了“数值”和“地址”。如果p是一个指向int类型的指针那么p就是p的地址值加sizeof(int)(通常是4字节)如果p是一个普通整数那么p就只是数值1。2·解引用当*用在已声明的指针变量前(或者是指针类型的表达式)时表示访问该指针指向的内存地址中的值int num 10; int *ptr; ptr num; printf(%d, *ptr);// 输出10访问ptr指向的值这里的ptr是一个指针变量存储地址。*ptr是一个整形变量保存的是指向地址的值。num是一个地址。3·强制类型转换*本身并不是强制类型转换符但*经常和强制类型转换符一起出现int value *(int *)0x1000;这里是创立了一个普通变量value只注重于地址的值。这里的0x1000作为地址本质上是一个整数类型的常量需要先被(int *)强制类型转换成一个指向int类型的指针指向的地址就是0x1000然后最左边的*对临时指针解引用cpu就会去地址为0x1000读取一个int大小的数据。这里的0x1000就不是变量是常量不是有名的指针而是无名的、临时的指针。这样的意义就是声明一个整形变量存储的值是地址为0x1000开始的按类型取值的值。char *p (char *)0x1000;这种方法和上述方法有所不同这里创立了一个指针变量p后续可以通过指针变量p继续操作。0x1000先被强制转换成指向char类型的指针然后初始化指针变量这个初始化等同于 ​​​​​​char *p; p(char *)0x1000只不过左边这样写叫做赋值。这样的意义就是声明一个名为p的字符指针指向内存地址为0x1000的位置。———————————————————————————————————————————关于取地址方式通常用于已经声明的变量的取地址操作。*用于一个由整形常量通常看成指定的地址起点强制类型转换成无名的(临时的)指针然后通过解引用去获取值或直接创立指针去存储地址。一定要注意的是*的解引用需要用于地址如果是普通量比如int p那么编译器会报错。如果给我一个地址要求传递到指针中然后使cpu通过这个指针去那个地址读取值就可以用*的方法。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询