精华内容
下载资源
问答
  • 需求:通过函数修改指针pointtodefine,使其指向自定义的类MyClass。 方法:需要将指向该指针指针作为参数传递给函数,再在函数中修改(即指针指针作为参数传递给函数) //函数定义 void user(void ** ...

    修改指针地址:一般可直接将指针赋值为目标类的地址

    void* pointtodefine=new MyClass();

     

    通过函数修改指针指向的地址

    有些场景需要通过函数修改指针pointtodefine,使其指向自定义的类MyClass。(例如,仅函数为留给用户的接口)

     

    注意:对于函数参数是通过值传递的情况,如果函数参数为指针的话,将实参指针传递给函数形参,相当于拷贝了实参,在函数内部修改指针地址不会影响原来实参指针的地址。但是,如果在函数内部修改指针指向的值,则实参指针指向的值也随之更改。

     

    总结:指针作为函数的参数,在函数中只能修改指针指向的值,无法实现修改实参指针的地址;指针的指针作为函数参数,在函数内部可以实现修改实参指针的地址。

    方法:需要将指向该指针的指针作为参数传递给函数,再在函数中修改(即指针的指针作为参数传递给函数)。图示化过程如下:

    具体代码如下:

    //函数定义
    void user(void ** ppanonymity){
        MyClass* target=new MyClass();
        *ppanonymity=target;
    }
    
    int main(){
        //调用方法
        void* pointtodefine=null;
        user(&pointtodefine);
        return 0;
    }
    

    它实现的作用还是

    void* pointtodefine=new MyClass();
    展开全文
  • 将各种类型的指针地址转换成unsigned long数字之后,就可以方便地在不同函数之间传递,绕过函数形参的类型检查。 在32位CPU上,long与指针变量都是占4字节;在64位CPU上,long与指针变量都是占8字节。因此,使用...

    原理

    • 将各种类型的指针地址存到 long 变量之中,就可以方便地在不同函数之间传递,绕过函数形参的类型检查。
    • 在32位CPU上,long与指针变量都是占4字节;在64位CPU上,long与指针变量都是占8字节。因此,使用 long 型变量保存指针地址可以兼容32位CPU和64位CPU。
    • 进一步地,将long变量的值转换成字符串之后,就可以方便地在不同进程之间传递指针,或者保存到文本中。

    示例

    #include <stdio.h>
    
    int main(){
        // 创建一个指针
        char str[]="Hello";
        printf("%p\n", str);
        // 显示为:0x7fffbc9e0630
        
        // 将任意类型的指针转换成long型变量
        long addr = (long)str;
        printf("%lx\n", addr);
        // 显示为:7fffbc9e0630
        
        // 将long型变量转换成任意类型的指针
        char *p = (char *)addr;
        printf("%s\n", p);
        // 显示为:Hello
    
        // 将long型变量打印到字符串中
        char buffer[20];
        sprintf(buffer, "%lx", addr);
        printf("%s\n", buffer);
        // 显示为:7fffbc9e0630
        
        // 从字符串中读取long型变量
        long addr2 = 0;
        sscanf(buffer, "%lx", &addr2);
        printf("%lx\n", addr2);
        // 显示为:7fffbc9e0630
        
        return 0;
    }
    

    该示例的运行结果如下:
    在这里插入图片描述

    展开全文
  • 易语言大漠多线程传参指针地址

    千次阅读 2020-05-30 09:22:37
    传参-指针地址 • 1、到字节集(文本变量) • 2、取字节集长度() • 3、取指针地址() • 4、线程启动(&子程序1,指针地址,)源码: 程序集 窗口程序集_启动窗口 .程序集变量 字节集长度, 整数型 .程序...

    传参-指针地址

    • 1、到字节集(文本变量)
    • 2、取字节集长度()
    • 3、取指针地址()
    • 4、线程启动(&子程序1,指针地址,)
    源码:

    程序集 窗口程序集_启动窗口
    .程序集变量 字节集长度, 整数型
    .程序集变量 字节集变量, 字节集
     
    .子程序 _按钮1_被单击
    .局部变量 传参地址
     
    字节集变量 = 到字节集 (编辑框1.内容)
    字节集长度 = 取字节集长度 (字节集变量)
    传参地址 = 取指针地址 (字节集变量)
    启动线程 (&子程序1, 传参地址, )
     
     
    .子程序 子程序1
    .参数 参_地址, 整数型
    .局部变量 接受的字节集, 字节集
    .局部变量 接受转换文本, 文本型
     
    接受的字节集 = 指针到字节集 (参_地址, 字节集长度)
    接受转换文本 = 取字节集数据 (接受的字节集, #文本型, )
    信息框 (接受转换文本, 0, , )
    .版本 2
    .支持库 shellEx
    .支持库 EThread
     
    .子程序 _按钮1_被单击
    .局部变量 传参地址
     
    字节集变量 = 到字节集 (编辑框1.内容 + “|” + 编辑框2.内容)
    字节集长度 = 取字节集长度 (字节集变量)
    传参地址 = 取指针地址 (字节集变量)
    启动线程 (&子程序1, 传参地址, )
     
     
    .子程序 子程序1
    .参数 参_地址, 整数型
    .局部变量 接受的字节集, 字节集
    .局部变量 接受转换文本, 文本型
    .局部变量 str, 文本型, , "2"
     
    接受的字节集 = 指针到字节集 (参_地址, 字节集长度)
    接受转换文本 = 取字节集数据 (接受的字节集, #文本型, )
    str = 分割文本 (接受转换文本, “|”, )
     
    信息框 (“账号:” + str [1] + #换行符 + “” + “密码:” + str [2], 0, , )

    511遇见易语言多线程大漠多线程

     

    展开全文
  • 指针地址与内存地址的区别

    千次阅读 2019-07-28 17:42:15
    通俗点儿理解其实它就是就是一个存放地址的变量存储空间,当指针指向某个变量,这时这个指针里就存放了那个变量的地址。这就是我们常说的指针指向一个地址,意思是通过它能找到以它为地址的内存单元。利用指针我们...

    要了解他们区别首先就知道什么是指针? 那指针到底是个什么东西呢?


            通俗点儿理解其实它就是就是一个存放地址的变量存储空间,当指针指向某个变量,这时这个指针里就存放了那个变量的地址。这就是我们常说的指针指向一个地址,意思是通过它能找到以它为地址的内存单元。利用指针我们可以直接获取变量中的值用,要是在指针前加 * 就是取其真值了(也就是被指向的变量的值)

    举个例子:

    如果一个整型变量int iint* p=&i表示将 i 的地址存入整型指针变量即int*中 。

    &i表示对取地址,返回值是i的地址。

    假设i在内存中所存在的地址为xx0bd00a(随便写的)

    也就是说 指针p中存放了xx0bd00a这个地址

    当你操作这个p时就是直接操作了xx0bd00a这个地址中存放的东西,间接操作了变量i,这就是指针的作用。

    那我们在看看内存是什么(其实上面已经描述很清楚了)?内存是实实在在的硬件,可以存放数据,地址是内存的标识,每一个地址都对应一个内存。所以内存和地址是一一对应密不可分的。
    比如说内存就像一个个的小格子,每个格子的大小是一个字节,可以存放一个字节的数据,而指针地址呢,就是存放盒子标号的,我们得到指针,也就可以找到那个盒子了(当然也存在找不到的情况,那就是野指针和空指针,这里就不详细叙说了)。




    原文链接:https://www.jianshu.com/p/06578c99d64c
     

    展开全文
  • CString输出为指针地址的问题

    万次阅读 2018-10-12 11:13:16
    std::cout不支持宽字符,如果需要使用UNICODE,需要使用std::wcout输出宽字符。同时,需要对CString做一下转换,LPCTSTR(szIniPath );  wcout &lt;&lt; "szIniPath=" &...
  • int *p; //定义一个指针 int a; //定义一个int类型的变量 ...2、 指针地址的值,指的是p的地址值,写作&amp;amp;amp;amp;p, 这个地址代表的内存,存储的是p的值,类型为int **型,也就是二级指针 3、指针...
  • ``` int a[100], *p = a, *q = &a[99]; printf("%d",q-p); ``` 上面代码编译没warning 为什么只输出printf("%d",p或q);会有warning 相减就没有。 结果是99,这个指针存的不是地址吗,为什么不是99×4
  • C++指针地址和指针的值

    千次阅读 2018-12-28 19:57:49
    学过C++ 都知道,指针是一个很重要的概念,他是C++的灵魂,在上学的时候从书山了解到,指针就是指向内存的地址,然,今天和同事讨论指针传递和引用传递的时候,我说:指针传递其实就是引用传递。打脸了。虽然他们都...
  • 2.指针地址的值,指的是p的地址值,写作&amp;p,这个地址代表的内存,存储出是P的值,类型为**型,也就是二级指针; 3.指针指向的值,指的是p值代表的地址上存储的值,写作*p,在这里就是变量a的值,类型为...
  • 指针地址作为参数传递

    千次阅读 2017-05-11 19:14:00
    指针本身也是一个变量,里边存储的是地址,如果需要在函数间传递可修改自身地址指针指针变量),那么有两种方法实现。 直接传递 取该指针地址,作为一个新的指针传递。 如 A()中有 double * T,需要传参到B()...
  • cout输出char *类型指针地址

    千次阅读 2018-12-13 17:20:35
    今天在看书上的程序时被cout&amp;amp;lt;&amp;amp;lt;(int)p&amp;amp;lt;&amp;...1.首先需要先了解指针的值是它指向存储单元地址的数值, 2.cout&amp;amp;lt;&amp;amp;lt;
  • go结构体存在嵌套结构体时,使用%+v格式化输出时会出现打印指针地址的问题,如: type Student struct{ Name string Desp string } type Teacher struct{ Student []*Student Name string } func main() { ...
  • AfxIsValidAddress判断指针地址是否有效

    千次阅读 2018-02-03 09:02:47
    检查指定内存是否有效(切记,不是是否为NULL):调试可以发现上述例子中指针提示为错误的指针。 返回值: Debug,指针的内存有效,则为非零值;否则为0。 在非Debug中,如果指针不是null,则非零,否则为0。...
  • 如何保存指针地址 理解指针的指针

    千次阅读 2014-10-29 16:03:06
    需要使用一个整数b,需要用b保存这个结构体指针地址(struct A* a = new A),使得b的值就是a的指向的地址,你可能会想直接b = a就可以了,但是编译器都不会答应。因为类型不同,一个是整数一个是指向struct A的...
  • 指针指针指针指向的地址,还有自身的地址之间的关系有些复杂,浅谈一下自己的理解。 #include <iostream> //#include <fstream> int test(int a, int b); int main() { using namespace std; ...
  • Qt下使用QDebug打印指针地址

    千次阅读 2015-12-16 11:27:27
    Qt下使用QDebug打印指针地址,是个很好用的方法。 qDebug()"parent--1"this->parent(); 输出为: 指针的输出精确的解释了指针的物理地址(待商榷),以及指针的类型。 当打印的是一个Qt的部件的时候,打印信息中...
  • 深入理解C语言指针

    万次阅读 多人点赞 2019-09-28 08:36:51
    一、指针的概念 ...1.1、变量和地址 先写一段简单的代码: void main(){ int x = 10, int y = 20; } 这段代码非常简单,就是两个变量的声明,分别赋值了 10、20。我们把内存当做一个酒店,而每个房间就...
  • 根据函数指针地址获取函数名

    千次阅读 2017-03-30 21:01:27
    man backtrace_symbols_fd,里面有对应的实例,或也可参考 http://blog.csdn.net/snow168rain/article/details/52043719, 其中关键为编译时要加参数-rdynamic
  • 指针地址的修改

    千次阅读 2013-03-10 19:37:22
    char *GetMemory( char *p )  {  p=(char *)malloc(100);  return p;  }  传入GetMemory函数的形参为字符串指针,在函数内部修改不能真正改变传入形参的值... 其实是这样的,当你想修改指针所指向的值的时候,那
  • Qt中如何获取某个控件的指针地址

    千次阅读 2015-12-16 11:28:12
    Qt中如何获取某个控件的指针地址,我知道C语言可以轻松的获取指针地址,不知道在Qt中是否有好的方法来获去某个部件的指针信息。 求指教。
  • C#查看各种变量的指针地址

    千次阅读 2013-06-29 21:40:56
    //普通数据成员,也是放在堆上了,查看指针时需用fixed固定 int m_nData = 100; //等价于C/C++的 #define 语句,不分配内存 const int PI = 31415; //unsafe可以放在Main函数声明中!! static unsafe void...
  • 先看段代码 include #include #include void memoryInit(char **str) ... *str = (char *)malloc(sizeof(char) * 20);...后续链表中会涉及到链表初始化,也需要传指针地址,因为需要对指针的指向做出改变
  • 指针指针地址

    千次阅读 2019-04-11 21:44:00
    指针指针地址 #include <stdio.h> //一般用"地址"表示常量,用"指针"表示存储地址的变量 int main(int argc, char *argv[]) { int x = 3; //定义int型变量x,内容为整数3 ...
  • //理解透彻指针地址地址可以记录一个数据类型的地址,同时指针也是一种 //数据类型,所以指针也可以记录一个指针地址。 #include using namespace std; void main() { //指针的解引用*:取出指针存储的地址...
  • 待定...
  • 指针就是地址

    千次阅读 热门讨论 2017-10-24 09:39:39
    首先明确一个观点:指针就是地址。这是理解指针的起始一步。 直观感受下,变量的地址 [cpp] view plain copy int main()  {   int foo;   int *foo_p;   foo = 5; ...
  • C语言中指针与取地址符&详解

    千次阅读 2019-10-31 22:19:27
    关于指针与取地址符 1.什么是指针? (1)首先,我们要明白什么叫做指针变量名,对于 int *p,这里的指针变量名不是 p 而是 p ,类似与 Java 中定义数组是 int [] array ,所以我习惯将 p 叫做 int * 类型 (2)通俗的...
  • C和C++打印指针值和地址

    千次阅读 2020-07-24 20:15:11
    1.C++ 中指针变量的地址指针变量的值是两个不同的概念 指针变量的地址:这是指针变量这个变量在内存中的存储地址(如图所示0x1211) 指针的值:里面存放的是一个地址,此地址即为指向的内存单元的地址(如图所示0x...
  • 指针地址

    千次阅读 2018-07-11 22:00:42
    实际上,指针==地址地址符&amp;表示取变量地址就是在变量前加&amp; “*”表示解引用或间接访问符int a=10;int *p=&amp;a *p表示整型地址变量 &amp;a表示整型地址值 将a的整型地址值赋给整型地址...
  • CFGetRetainCount((__bridge CFTypeRef)self : 打印retainCount打印指针地址(不是指针指向对象的地址):NSLog(@"aStr指针内存地址:%x",&aStr);打印指针所指向对象的地址使用这个 :NSLog(@"aStr指针所指向...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 888,708
精华内容 355,483
关键字:

指针地址