首页 > 其他分享 >指针

指针

时间:2024-04-24 09:56:13浏览次数:23  
标签:字节 int char 地址 str 指针

指针(c)

1.基本概念

1.64位操作系统中,指针占8个字节

  在32位操作系统中,占4个字节

2.创建指针

int a=1; 

int *p = &a;(int是指针类型,p为指针的名称,&a是取a的地址)

      *p=100;( *p此时表示取值,即*p=100  ==  a=100;也可以说*p==a)

3.野指针;空指针

int *p;//野指针

int *p=NULL;//空指针

2.函数中的使用

1.为什么使用int *x,而不是int x

eg:

 打印出来为

 原因:

a=x,b=y。即x=1,y=2

通过中间变量t,可以发生交换,即x=2,y=1;

执行完后会释放空间,x与y被删除(如图)

 正确的:

 如图

 swap(int  *x,int  *y)               //表示:int  *x=&a.y同理

又因为*x=a,*y=b,所以通过中间变量可以转换。

执行完后释放内存空间(如图)

 3.指针的运算

eg:

1.

int a,*p=&a,*b;(定义三个变量,a,p,b.后两个为指针,且p保存了a的地址)

b=p;(此时表示b也保存了a的地址)

2.

int x=3,*p=&x,y=0;

y=*p++;        //p存储的地址值加一,即指向下一个字符(因为x是整型,占4个字节。所以地址加四)

y=(*p)++; //p指向的地址里的值加一(即x++)

3.数组的复制,s1复制到s2

 代码如上图:5)先判断s1指针是否指向'/0'。否,则循环。

因此编译出来为

若要只出现hello,则要先赋值在判断 

 

注:const表示只读不改,修饰离他最近的变量

eg:

即num不会改变;p2不会改变

 

 

 

 

 

 

4.数组与指针

1.申请空间(malloc)

 14)(char*)malloc(32) //申请了32个字节,并且为char型

       char *str=   //创建了一个char型指针str,指向了申请的内存空间

 当free(str)后,*str=NULL 或者str=NULL     //地址为空可以不用加*

 当申请内存被释放,str指向了一个被释放掉的内存,成为野指针。

因此要将他变为空指针。

    

 

 

 

//待续。。。。。。。。

标签:字节,int,char,地址,str,指针
From: https://www.cnblogs.com/yuli10952/p/18153775

相关文章

  • 指针和引用的区别
    一,区别是否需要初始化指针不需要初始化,但是最好初始化引用必须初始化,不能初始化为空对象,初始化后不能改变是否允许为空指针允许引用不允许是否直接操作对象指针通过某个指针变量指向一个对象,对所指向的对象进行间接操作引用是目标对象的别名,对引用的操作就是......
  • 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查
    假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。/********************************************************************* 函数名称......
  • 《渣男代码历险记》第四 双指针怪
    已知一个带有表头结点的单链表,结点结构为:data next假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求:(1)描述算法的基本设......
  • 函数指针
    一、函数指针函数指针:指向存放函数空间首地址的指针变量函数指针的定义方式:函数返回值类型(*指针变量名)(函数参数列表);为了方便使用:typedef函数返回值类型(*指针变量名)(函数参数列表);typedefint(*ptrFunc)(int,int);//typedef定义了一种ptrFunc的类型,并定义这种类型为指向......
  • 学废 C 语言——指针
    指针是C语言的基本类型之一。因为某个红书的缘故,指针作为一个“教材难点”撂倒了无数大学新生,但C语言的使用不可能绕开指针,甚至我可以断言不会用指针就不要用C。我希望这篇文章能帮你搞懂指针这个概念。函数处理参数的方式我们首先写一个改变指定变量的函数:voidadd(doubl......
  • PLC指针和引用类型
    使用环境是PLC1500,在1200中可能某些数据类型不可用。PointerAnyVariantReferences数组,数组DB,动态数组1.PointerPointer实际上会占用6个Bytes地址空间。前两个byte用来放DB块号(B#16#81表示I,82表示Q,83表示M,84表示DB,等等)或者0,后面四个放数据区,字节地址,位地址。......
  • 智能指针
    芝士wa2024.4.8参考视频链接概述C++的指针包括两种:原始指针智能指针:unique_ptr,shared_ptr,weak_ptr智能指针是原始指针的封装,其优点是会自动分配内存,不用担心潜在的内存泄漏。各种指针中,最常用的是裸指针,其次是unique_ptr和shared_ptrweak_ptr是shared_ptr的一个补充......
  • vptr和vtbl(虚指针和虚函数表)
    vptr和vtbl(虚指针和虚函数表)c++代码的抽象类是->类当中只包含纯虚函数当一个类有虚函数,即便类当中没有成员变量.他的对象大小也会有一根指针大小->由操作系统决定指针多大虚函数子类的对象里面有父类的成分示例结构代码:#pragma#ifndef__VPTR_AND_VTBL__#define__V......
  • rust引用计数智能指针Rc<T>
    大部分情况下所有权是非常明确的:可以准确地知道哪个变量拥有某个值。然而,有些情况单个值可能会有多个所有者。例如,在图数据结构中,多个边可能指向相同的节点,而这个节点从概念上讲为所有指向它的边所拥有。节点在没有任何边指向它从而没有任何所有者之前,都不应该被清理掉。为了启用......
  • 翻译|指针很复杂,或者说:字节里究竟有什么?
    本文原作者:RalfJung,原文地址:https://www.ralfj.de/blog/2018/07/24/pointers-and-bytes.html今天夏天,我再次完全使用Rust开发,并致力于(除其他事项外)为Rust/MIR开发一个“内存模型”。不过,在谈论我今年的想法之前,我终于要花点时间打破“指针很简单:他们只是一些整数”的神话了。......