首页 > 其他分享 >C指针

C指针

时间:2023-06-06 11:55:28浏览次数:27  
标签:存储 字节 地址 指针 数据 变量

一、指针基础

1.不同内存变量的作用域和生命周期

2.指针与底层硬件联系紧密,指针可操作数据的地址,实现对数据的简介访问。

3.指针的使用场景:

  3.1 使用指针传递大容量的参数,主函数和子函数使用的是同一套数据,避免了参数传递过程中的数据复制,提高了运行效率,减少了内存占用。

  3.2 使用指针传输输出参数,利用主函数和子函数使用同一套数据的特性,实现数据的返回,可实现多返回值函数的设计

  3.3 传递返回值:将模块内的公有部分返回,让主函数持有模块的’句柄‘,便于程序对指定对象的操作

  3.4 访问硬件指定内存下的数据,如设备ID、对寄存器的操作等。

  3.5 将复杂格式的数据转为字节,方便通信与存储。

4.指针的值存储的是变量的地址,地址的长度与CPU的位宽相关,如:

  32位的CPU,地址长度是四个字节

  64位的CPU,地址长度是八个字节

5.指针与数组:数组是指针的特殊表现形式而已,数组名就是指针变量名,指针的地址存储的是数组的首地址,其他复杂的数据类型同样也是存储首地址。

6.指针变量的运算:因为指针存储的是地址,所以在一般情况下指针变量只有加减运算,指针变量没加、减1,地址就会加、减对应的类型的字节数,如:short 类型的指针变量+1,地址就会偏移2个字节, int类型的指针变量+1,地址就会偏移4个字节。

7.特殊类型的指针:  

  7.1 void指针,俗称’通用指针‘,通常在一些系统库函数的参数会用到void指针,因为它要具备通用性,就不清楚程序员在调用此类函数时  候传递的参数是什么类型的指针。

  7.2 null指针,俗称’空指针‘,通常会被赋值0.

8. 使用指针时,需要注意的事项

  

标签:存储,字节,地址,指针,数据,变量
From: https://www.cnblogs.com/zhanghongfei/p/17454017.html

相关文章

  • C++智能指针的原理和实现
    一、智能指针起因在C++中,动态内存的管理是由程序员自己申请和释放的,用一对运算符完成:new和delete。new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针;delete:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。使用堆内存是非常频繁的操作,容易造成......
  • 数组和双指针框架
    数组和双指针框架快慢指针:有序数组/链表原地去重、数组/链表原地删除快慢窗口指针:在限定条件下找最长/短的连续子序列/子串/子数组左右最值指针:缩减一维/二维有序搜索空间 快慢指针:有序数组/链表原地去重、数组/链表原地删除题目:26.删除有序数组中的重复项核心模式:数组已经排序......
  • C++智能指针:weak_ptr
    weak_ptr虽然是智能指针,但实际上是作为shared_ptr的辅助指针使用。weak_ptr通常不单独使用,一般用于查看对应的shared_ptr的信息。weak_ptr没有重载*,->等指针运算符。weak_ptr对象不会影响shared_ptr对象的引用计数。 #include<iostream>#include<string.h>#include<memory......
  • [CEOI2017] Sure Bet(双指针)
    题目大意:给出两个数组A,B,可以在两个数组选择任意多个数,代价为选择的数的数目,得到的奖励为在数组A和数组B中选择的数的两个总和较小的那个,求能得到的最大收益思路:1.先给两个数组分别由大到小排序后求前缀和,不难得出在数组A中选择i个数,数组B中选择j个数时,最大收益为:m......
  • C++面试八股文:指针占用多少个字节?
    某日小二参加XXX科技公司的C++工程师开发岗位4面:面试官:memset、memcpy和strcpy的区别是什么?小二:memset用于将一块内存设置为特定的值,memcpy用于将一块内存从一个位置复制到另一个位置,strcpy用于将一个字符串从一个位置复制到另一个位置。面试官:嗯,不错。那么你知道这三个函......
  • golang深入理解指针
    Golang中的指针指针的概念:指针地址,指针类型,指针取值两个符号:*:根据地址取值,&:取地址关于指针变量是用来存储数据的,变量的本质是给存储数据的内存地址起了一个好记的别名。a:=1//直接通过a这个变量来读取内存中保存的1这个值。在计算机底层a这个变量其实对应了一个内存地址。......
  • 关于野指针的形成原因以及处理方法
    野指针:指针指向的位置是   不可知的,  随机的,  不正确的,   没有明确限制的。  野指针形成原因:     1,指针未初始化(例int*p;)     2,指针越界访问(当指针指向的范围超出arr的范围时,p就是野指针)        arr[10]={0};......
  • 野指针得生成、危害、清除
    1、野指针得概念::指针指向的位置不可知的(随机、不正确、没有明确限制的)2、野指针生成的三种情况1、指针未定义,就进行*p相关操作2、指针越界访问,知道指向哪,但不是有效值3、指针指向的空间释放(函数的变量作用范围在函数内,返回函数内定义的指针到主函数是无效的,已经被......
  • 函数返回值与指向对象的指针和引用
    定义一个指向对象的指针或则引用不会调用构造函数和析构函数。首先,强调一点,和函数传参一样,函数返回时也会做一个拷贝。从某种角度上看,和传参一样,也分为三种:(1)返回值:返回任意类型的数据类型,会将返回数据做一个拷贝(副本)赋值给变量(return语句后边的变量会生成一个副本给一个临......
  • 双指针|三数之和
    ......