首页 > 其他分享 >指针2)

指针2)

时间:2024-09-25 19:23:11浏览次数:8  
标签:src dest char 地址 pa ebp 指针

1.&

&是地址符,类型是其后面的类型加一个“*”,任何变量都可以使用&来获取地址,但不能用在常量上。     

char a = 10; 

short b = 20; 

int c = 30; 

char*=pa

pa=&a

lea取地址:ebp-4的地址放入eax,再将eax里的地址放入ebp-10里

&可以取任何一个变量的地址

&a的类型是a的类型+*—char*

char a = 10;   

char* pa = (char*)&a;  

简写为:  

char* pa = &a;   

char** ppa = (char**)&pa;  —————————————

简写为:  

char** ppa = &pa;  

 ————————————————————————————————————————————————————————————————

x全局变量,后面是他的地址。y存的是x的值

y存的是x的地址

char* x   

*x==char

ebp-8里的值放入了ecx里(是一个地址)

将ecx里的地址里面的值存入edx

————————————————————————————————————————————————————————

数组

char arr[10];      

char* p = &arr[0]; //取数组第一个元素的地址    

char* p2 = arr; //简写    

*(p+i)=p[i]    

此时p指数组第一个的地址

*p指第一个的内容

———————————————————————————————————————————————————————————

 字符串

char* x = "china"; 

char y[] = "china";

void Function() 

 *(x+1) = 'A';不能修改(常量区

y[1] = 'A';可以修改(全局区

——————————————————————————————————————————

void Function()   

{   

 char* x = "china";    

在常量区

 char y[] = "china";   

 

先将前四个字节拷贝到eax中(eax=6e696863),然后存入ebp-8,再将最后一个字节存入cx中

存入ebp-4

 *(x+1) = 'A';  修改不了

 y[1] = 'A';  修改成功

}   

——————————————————————————————————————————————————————————

指针函数

是一个函数,返回值是*类型

1.char* strcpy (char* dest, char* src);     

复制字符串src到dest中。返回指针为dest的值。     

char* strcpy (char* dest,char* src)   

{   

char* ret =dest

 while((*dest++)=(*src++));   

*dest =*src; 

dest++; 

src++;

 return ret;  

}   

3、char* strcat (char* dest, char* src);     

将字符串src添加到dest尾部。返回指针为dest的值。     

char* strcat (char* dest, char* src)   

{   

 while(*dest != '\0')  先将指针指向结尾即0,

  dest++; 

 while((*dest++ = *src++)!='\0');    

 return dest;  

}   

 

标签:src,dest,char,地址,pa,ebp,指针
From: https://www.cnblogs.com/yuli10952/p/18408774

相关文章

  • Go从入门到放弃之指针
    要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值指针地址和指针类型每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中使用&字符放在变量前面对变量进行“取地址”操作。Go语言中的值类型(int、float、bool、string、array、struct)都......
  • 理解C语言之深入理解指针(三)
    目录1.字符指针变量2.数组指针变量2.1数组指针变量是什么?2.2数组指针变量怎么初始化3.⼆维数组传参的本质4.函数指针变量4.1函数指针变量的创建4.2函数指针变量的使⽤4.3两段有趣的代码4.3.1typedef关键字5.函数指针数组6.转移表1.字符指针变......
  • C和指针:函数
    函数定义函数体就是一个代码块,它在函数被调用时执行。类型函数名(形式参数)代码块与函数定义相反,函数声明出现在函数被调用的地方。函数声明编译器是如何知道该函数期望接受的是什么类型和多少数量的参数。原型int*find_int(intkey,intarray[1,intlen);原型告诉编译器函数......
  • 【C语言中的函数指针】
    C语言中的函数指针首先搞一个循环输出字符串数组的功能代码如下:/*filename:funcp.c*/#include<stdio.h>/*compile:gccfuncp.c-ofuncprun:./funcp*//**/intmain(intargc,char*argv[]){char*buff[5]={"Jim","Pike"......
  • 值传递、引用传递、指针传递【函数的参数传递】详解
    形参变量:形参变量是功能函数里的变量,只有在被调用的时候才分配内存单元,调用结束后立即释放。所以形参只在函数内部有效。实参变量:实参可以是常量,变量,表达式,函数等等,但无论是何类型,在进行函数调用是,他们必须有确定的值,以便把这些值拷贝给形参。值传递、引用传递和指针传递......
  • go基础-7.函数和指针
    函数是一段封装了特定功能的可重用代码块,用于执行特定的任务或计算函数接受输入(参数)并产生输出(返回值)函数定义packagemainimport"fmt"//使用func关键字定义一个函数funcsayHello(){fmt.Println("hello")}funcmain(){//函数()调用函数sayHello()}......
  • C语言结构体、指针和常见数据结构
    在学习C语言时,结构体、指针和常见的数据结构如链表、栈、队列、二叉树等,是绕不开的重点。本篇博客用通俗易懂的方式,介绍这些概念,结合简单的代码示例,带你逐步掌握这些基础知识。1.结构体和指针我们先来看一眼结构体和指针,不懂这些的话,下面的代码肯定看不懂,没学过......
  • 智能指针之手撕共享指针shared_ptr
    要点成员是指向实例的指针和应用计数应用计数也应该是一个共享的int指针,因为这个计数需要各个共享指针同步维护需要重载的函数有:用指针构造;拷贝构造;赋值运算符=;解地址运算符*;指针调用成员的运算符->;析构函数;涉及到计数的部分:构造时初始化:1拷贝构造:+1赋值=:原有-1,新对象+1......
  • C语言深入理解指针(四)
    目录字符指针变量数组指针变量数组指针变量是什么数组指针变量怎么初始化二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用代码typedef关键字函数指针数组转移表字符指针变量字符指针在之前我们有提到过,(字符)(指针)前面的字符代表着存储的元素为......
  • 双指针算法专题(2)
    找往期文章包括但不限于本期文章中不懂的知识点:个人主页:我要学编程(ಥ_ಥ)-CSDN博客所属专栏: 优选算法专题想要了解双指针算法的介绍,可以去看下面的博客:双指针算法的介绍 目录611.有效三角形的个数LCR179.查找总价格为目标值的两个商品15.三数之和18.四数之和......