news 2026/4/2 16:46:18

C语言--指针1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言--指针1

1.指针的理解

1.针可以理解为存储的数据的地址或内存单元

2.地址存放在指针变量中

int a=10; int*pa=&a;

这里pa为指针变量,存放了a的地址;

* 为解引用操作符,可以理解为指引pa找到a的地址,pa就=&a,而*pa=a;

注意:

• 32位平台下地址是32个bit位,指针变量⼤⼩是4个字节

• 64位平台下地址是64个bit位,指针变量⼤⼩是8个字节

• 注意指针变量的⼤⼩和类型是⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的。

3.

1. #include <stdio.h> int main() { int n = 0x11223344; int *pi = &n; *pi = 0; return 0; 2.#include <stdio.h> int main() { int n = 0x11223344; char *pc = (char *)&n; *pc = 0; return 0;

调试我们可以看到,代码1会将n的4个字节全部改为0,但是代码2只是将n的第⼀个字节改为0。

指针的类型决定了,对指针解引⽤的时候有多⼤的权限(⼀次能操作⼏个字节)。 ⽐如: char* 的指针解引⽤就只能访问⼀个字节,⽽ int* 的指针的解引⽤就能访问四个字节。

4. 指针+整数

我们可以看出, char* 类型的指针变量+1跳过1个字节, int* 类型的指针变量+1跳过了4个字节。

指针的类型决定了指针向前或者向后⾛⼀步有多⼤(距离)。

5.void*指针:可以接受任意类型地址,但不能直接进行+-整数或解引用运算;

⼀般 void* 类型的指针是使⽤在函数参数的部分,⽤来接收不同类型数据的地址,这样的设计可以 实现泛型编程的效果。使得⼀个函数来处理多种类型的数据。

6.

int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int *p = &arr[0]; int i = 0; int sz = sizeof(arr)/sizeof(arr[0]); for(i=0; i<sz; i++) { printf("%d ", *(p+i));//p+i 这⾥就是指针+整数 }

利用指针+-整数来当作数组的地址;

7.指针与指针·

#include <stdio.h> int my_strlen(const char* s) { const char* p = s; while (*p != '\0') p++; return p - s; } int main() { printf("%d\n", my_strlen("abc")); return 0; }

会打印出来3,s指向字符串首字符;

8.指针关系比较

#include <stdio.h> int main() { int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int *p = &arr[0]; int sz = sizeof(arr)/sizeof(arr[0]); while(p < arr + sz) //指针的⼤⼩⽐较 { printf("%d ", *p); p++; } return 0; }

看到的小笑话:电脑为什么会感冒?因为它的Windows开着,还没装杀毒软件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 1:28:12

终极选择:5分钟快速掌握Prometheus与Datadog错误监控核心差异

终极选择&#xff1a;5分钟快速掌握Prometheus与Datadog错误监控核心差异 【免费下载链接】skywalking APM, Application Performance Monitoring System 项目地址: https://gitcode.com/gh_mirrors/sky/skywalking 你的监控系统是否真正可靠&#xff1f;当凌晨3点收到告…

作者头像 李华
网站建设 2026/4/1 6:22:52

Windows API 积累

1.BOOL GetLastInputInfo(PLASTINPUTINFO plii);获取系统中“最后一次用户输入事件”的时间戳&#xff0c;“用户输入”包括&#xff1a;鼠标移动鼠标点击键盘按键typedef struct tagLASTINPUTINFO {UINT cbSize; // 结构体大小&#xff0c;必须填写DWORD dwTime; // 最后一…

作者头像 李华
网站建设 2026/4/3 3:05:01

Cortex终极指南:Clojure中的机器学习框架快速入门

Cortex是一个功能强大的Clojure机器学习框架&#xff0c;由ThinkTopic团队开发维护。该项目专注于神经网络、回归和特征学习&#xff0c;为开发者提供了简洁高效的机器学习解决方案。无论你是Clojure新手还是经验丰富的开发者&#xff0c;Cortex都能帮助你快速构建和训练机器学…

作者头像 李华
网站建设 2026/4/1 19:51:34

3D打印质量稳定性优化与OrcaSlicer参数调校实战指南

3D打印质量稳定性优化与OrcaSlicer参数调校实战指南 【免费下载链接】OrcaSlicer G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.) 项目地址: https://gitcode.com/GitHub_Trending/orc/OrcaSlicer 当你发现打印模型出现层间开…

作者头像 李华
网站建设 2026/4/2 5:11:02

终极Node.js ESC/POS打印实战指南:从零开始构建专业打印系统

终极Node.js ESC/POS打印实战指南&#xff1a;从零开始构建专业打印系统 【免费下载链接】node-escpos &#x1f5a8;️ ESC/POS Printer driver for Node.js 项目地址: https://gitcode.com/gh_mirrors/no/node-escpos 还在为POS打印机连接烦恼吗&#xff1f;想要用几行…

作者头像 李华
网站建设 2026/4/1 20:22:06

开源TTS新星EmotiVoice上线,支持多语言情感语音输出

开源TTS新星EmotiVoice&#xff1a;让机器声音拥有情感温度 在智能音箱里听到千篇一律的“好的&#xff0c;已为您设置闹钟”时&#xff0c;你是否曾希望它的语气能多一点关切&#xff1f;当有声书朗读到感人段落却毫无波澜时&#xff0c;是否觉得少了些共鸣&#xff1f;语音助…

作者头像 李华