精华内容
下载资源
问答
  • C++中如何给字符指针赋值

    千次阅读 2015-10-28 22:17:09
    p 是 char 型指针,如果不它指向地址,或不它分配存储单元,它是不能读入字符串的。 指向地址的方法: char a[32]; char *p=&a[0]; cin >> (p); cout 分配存储单元的方法: p = (char *) malloc(....); ....

    char *p;
    p 是 char 型指针,如果不给它指向地址,或不给它分配存储单元,它是不能读入字符串的。
    指向地址的方法:
    char a[32];
    char *p=&a[0];
    cin >> (p);
    cout << (p);
    分配存储单元的方法:
    p = (char *) malloc(....);

    展开全文
  • 我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会...这个时候,你就可以将这个字符串指针地址传递

    我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会用到的。

    多级指针像一把双刃剑,有利也有弊。你能够用它完成一些奇淫技巧,也会遇到一些不可捉摸的错误。

    其中,指针有一个非常重要的作用:间接赋值。

    你能够通过n级指针去修改n-1级指针的内容,甚至直接修改指针所指向的内存空间

    例如:

    你在main函数里面声明了一个字符串指针,然后你想通过调用一个外部函数来修改它。这个时候,你就可以将这个字符串指针的地址传递给函数。这样,函数的参数就是一个二级指针了,通过这个二级指针,你可以很方便的修改字符串的内容。

    代码如下:

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>intTest1(char**p1){chartemp=(char)malloc(50);strcpy(temp,“hey!”);//间接赋值*
    p1=temp;//更改指针所指向的内存空间
    printf(“T1 %d\n”,p1);//打印出地址}
    intTest2(char
    p2){strcpy(p2,“goodBy!”);printf(“T2 %d\n”,p2);//打印出地址 ,会发现和实参的地址一样}//间接赋值//利用n级指针 改变n-1级指针的值
    intmain(int argc,charargv[]){charp=(char*)malloc(100);printf("%d\n",p);strcpy(p,“hello”);Test1(&p);//通过n+1级指针直接更改指向的内存空间printf("T1 修改后的值 %s\n ",p);Test2§;//通过同级指针更改内容printf("T2 修改后的值 %s\n ",p);system(“pause”);return0;}

    上述代码中有两个函数,其中Test1直接通过n+1级指针修改了p所指向的内存空间,而Test2只是修改了p所指向内存空间的内容。它们都能够修改p的内容,但是相对于test2而言,test1更为彻底。当然,具体选用那种方式,还是要根据实际的项目需求来定。

    指针

    http://www.makeru.com.cn/live/1392_238.html?s=45051

    指针换装你还认识吗

    http://www.makeru.com.cn/live/5413_2043.html?s=45051

    C语言控制led灯

    http://www.makeru.com.cn/live/1392_304.html?s=45051

    如何编写生活中的C语言

    http://www.makeru.com.cn/live/5413_2649.html?s=45051

    展开全文
  • 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛。所以我们可以用下面的方法: 1 2 int*p = (int*)0x12ff7c; *p =0x100; ...

    1.一种直观的方法

     

    假设现在需要往内存0x12ff7c地址上存入一个整型数0x100。我们怎么才能做到呢?

    我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛。所以我们可以用下面的方法:

    1
    2
    int *p = (int *)0x12ff7c;
    *p = 0x100;

     

    需要注意的是将地址0x12ff7c赋值给指针变量p的时候必须强制转换。

     

    1.1 为什么在此处,我们敢往0x12ff7c这个地址赋值呢?

      至于这里为什么选择内存地址0x12ff7c,而不选择别的地址,比如0xff00等。这仅仅是为了方便在Visual C++ 6.0上测试而已。如果你选择0xff00,也许在执行*p = 0x100;这条语句的时候,编译器会报告一个内存访问的错误,因为地址0xff00处的内存你可能并没有权力去访问。既然这样,我们怎么知道一个内存地址是可以合法的被访问呢?也就是说你怎么知道地址0x12ff7c处的内存是可以被访问的呢?其实这很简单,我们可以先定义一个变量i,比如:

    1
    int i = 0;

    变量i所处的内存肯定是可以被访问的。然后在编译器的watch窗口上观察&i的值不就知道其内存地址了么?这里我得到的地址是0x12ff7c,仅此而已(不同的编译器可能每次给变量i分配的内存地址不一样,而刚好Visual C++ 6.0每次都一样)。你完全可以给任意一个可以被合法访问的地址赋值。得到这个地址后再把“int i = 0;”这句代码删除。一切“罪证”销毁得一干二净,简直是做得天衣无缝。

     

    2.另一个方法

     

    除了这样就没有别的办法了吗?未必。我们甚至可以直接这么写代码:

    1
    *(int *)0x12ff7c 0x100;

    这行代码其实和上面的两行代码没有本质的区别。先将地址0x12ff7c强制转换,告诉编译器这个地址上将存储一个int类型的数据;然后通过钥匙“*”向这块内存写入一个数据。


    上面讨论了这么多,其实其表达形式并不重要,重要的是这种思维方式。也就是说我们完全有办法给指定的某个内存地址写入数据的。

     

    转载于:https://www.cnblogs.com/zhugeanran/p/8550413.html

    展开全文
  • 我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会...这个时候,你就可以将这个字符串指针地址传递

    我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会用到的。

    多级指针像一把双刃剑,有利也有弊。你能够用它完成一些奇淫技巧,也会遇到一些不可捉摸的错误。

    其中,指针有一个非常重要的作用:间接赋值。

    你能够通过n级指针去修改n-1级指针的内容,甚至直接修改指针所指向的内存空间
    例如:

    你在main函数里面声明了一个字符串指针,然后你想通过调用一个外部函数来修改它。这个时候,你就可以将这个字符串指针的地址传递给函数。这样,函数的参数就是一个二级指针了,通过这个二级指针,你可以很方便的修改字符串的内容。

    代码如下:

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    int Test1(char **p1)
    {
    char *temp = (char *)malloc(50);
    strcpy(temp,“hey!”); //间接赋值
    *p1 = temp; //更改指针所指向的内存空间
    printf(“T1 %d\n”,*p1); //打印出地址
    }

    int Test2(char *p2)
    {
    strcpy(p2,“goodBy!”);
    printf(“T2 %d\n”,p2); //打印出地址 ,会发现和实参的地址一样
    }

    //间接赋值
    //利用n级指针 改变n-1级指针的值
    int main(int argc,char *argv[])
    {
    char *p = (char *)malloc(100);
    printf("%d\n",p);
    strcpy(p,“hello”);

    Test1(&p);  //通过n+1级指针直接更改指向的内存空间
    printf("T1 修改后的值 %s\n ",p);
    
    Test2(p);   //通过同级指针更改内容
    printf("T2 修改后的值 %s\n ",p);
    system("pause");
    return 0;
    

    }
    上述代码中有两个函数,其中Test1直接通过n+1级指针修改了p所指向的内存空间,而Test2只是修改了p所指向内存空间的内容。它们都能够修改p的内容,但是相对于test2而言,test1更为彻底。当然,具体选用那种方式,还是要根据实际的项目需求来定。

    指针
    http://www.makeru.com.cn/live/1392_238.html?s=45051
    指针换装你还认识吗
    http://www.makeru.com.cn/live/5413_2043.html?s=45051
    C语言控制led灯
    http://www.makeru.com.cn/live/1392_304.html?s=45051
    输入和输出
    http://www.makeru.com.cn/live/1758_312.html?s=45051

    可以加入学习交流群来一起学习交流 【 943552345

    展开全文
  • 一个字符串,如"hello",一般为字符串常量,可以用它对字符指针赋值,或初始化,相当于把这个字符串常量的首地址这个指针,如: char *p = "hello";  或者 char *p; p="hello"; 但是,当用"h
  • C++指针运算指针变量加或减 一个整数 p++;...C++指针变量赋值 将一个变量地址一个指针变量。point=&array;//将变量array的地址point point=array;//将数组array首元素的地址point point=...
  • 1、字符指针字符串赋值给字符指针变量时,可以在定义的时候就初始化,也可以先定义,再赋值。2、字符数组但字符串赋值给字符数组时,可以在定义的时候就初始化,但不可以像字符指针那样先定义,后面再赋值。为了搞...
  • 0. 什么是指针 当我们定义一个变量 namevarnamestring="Go编程时光"此时,name 是...出于某些需要,我们会将这个内存地址赋值给另一个变量名,通常叫做 ptr(pointer的简写),而这个变量,我们称之为指针变量。换句...
  • 1、字符指针字符串赋值给字符指针变量时,可以在定义的时候就初始化,也可以先定义,再赋值。2、字符数组但字符串赋值给字符数组时,可以在定义的时候就初始化,但不可以像字符指针那样先定义,后面再赋值。为了搞...
  • 如何给一个字符指针char *p 赋值?很多人会迅速的写出:我看到很多博客上面写的是这样操作: char *p; p="hello"; 在C语言中这种方式确实是被允许的,但是到c++11中会给出警告(报错): 错误提示的...
  • 一个字符串,如"hello",一般为字符串常量,可以用它对字符指针赋值,或初始化,相当于把这个字符串常量的首地址这个指针,如: char *p = "hello";  或者 char *p; p="hello"; 但是,当用"hello...
  • 如何避免野指针

    2016-11-30 22:47:15
    何为野指针?野指针就是,没有被初始化的指针,会由系统默认一个随机地址指针。如果不小心使用的野指针,易造成内存泄漏的段错误。...2、当往指针指向的空间赋值时,一定要检查是否有这个指针分配空间。如果
  • 什么是野指针? 野指针是指随机指向一块内存的指针指针的危害? 野指针可能会造成内存泄露的危害。(注意:野指针不会一定造成内存泄露,如果该野指针指向的内存刚好...2.当想一个指针指向的空间赋值时,一定要
  • 2.函数指针指针函数在C语言中,函数是有他的地址,同理,函数有也有他的地址,如果如果我们把函数的地址赋值给函数指针,那么我们就可以间接的通过函数指针调用函数地址了。函数指针的定义如下:数据类型 (*fun)(参...
  • 关于如何将const char* 变量通过strcpy赋值给未初始化的char*变量 首先,未初始化的char*变量只是一个char指针 而strcpy(char* p, const char* s)是将两个指针解引用。然后进行拷贝。 如果直接通过strcpy函数来...
  • 如何避免野指针

    2016-11-13 21:41:37
    何为野指针?野指针就是,没有被初始化的指针,会由系统默认一个随机地址指针。如果不小心使用的野指针,易...2、当往指针指向的空间赋值时,一定要检查是否有这个指针分配空间。如果没有,就用malloc函数进行分配
  • 嵌入式编程中,如何使用复杂指针? ...在C语言中,函数是有他的地址,同理,函数有也有他的地址,如果如果我们把函数的地址赋值给函数指针,那么我们就可以间接的通过函数指针调用函数地址了。 ...
  • 我正在匆匆打字,所以请原谅任何错别字(我稍后会有机会...我认为你将静态和动态类型与编译时和运行时类型混淆了一下(或者当你将类型A的对象的地址分配类型B的指针而B是父类时,就像在C中一样A.)除了反射技巧,Java中...
  • 与C语言的解决方案一样,把对象的地址传递成员函数,这样成员函数就知道是哪个对象在调用它,与C语言不同的是该操作是隐藏,编译器帮我们自动完成的,也就是类的成员函数都隐藏着一个参数,这个参数就是this指针。...
  • 函数指针

    2020-09-26 14:36:47
    -----含义: 函数指针是指向函数的指针变量。...2.如何给函数指针赋值: p = printwelcome;//函数名就是地址 3.如何通过函数指针调用函数: p( ) //直接通过指针名字加() 或(*p)() //取内容 (*指针名字)+() #
  • 指针

    2017-10-18 12:19:11
    指针就是指向变量的地址: int *p (*是指声明的意思—声明一个P指针)及如果没有指向的东西... int*p=null 把NULL赋值给P; 指针的分类: *p 一级指针 **a 二级指针 ***b 三级指针 . . . 一级指针指向变量的地址
  • 指针变量是指向指针的变量,是一个存放地址的变量 变量的指针是变量的地址 指针变量的一般形式为: float *pointer_3; ...(1)给指针变量赋值:p = &a; (2)引用指针变量的值:printf("% o
  • 通过二级指针去访问二维数组需要先二级指针分配等同于二维数组行数的一维数组指针,然后把二维数组的每行首地址赋值给对应位置的一维指针上。之后就可以通过二维指针直接访问了。 参考代码如下,可以看具体注释...
  • 何为野指针,随机指向一块内存的指针。不一定每次都产生段错误,因为它随机指向的地址可能被分配了内存。...2,当往一个指针赋值的时候,一定要给指针分配空间,int *p = malloc(100);返回首地址,int *p = m
  • C++指针

    2021-01-04 16:21:06
    把i地址的编号赋值给pi cout<<*pi;//地址的内容 cout<<pi;//地址,&i 如何指针类型? 众多文章都列举了各种类型的指针,对于它们的解析也很简单。 看优先级!! () > [] > * 例如: int ...
  • 指针的范例

    2016-11-08 13:11:41
    把变量的地址赋值给指针,通过指针访问值#include <stdio.h>int main() { int x, y; //声明变量 int *p1 = NULL;//声明并初始化指针 int *p2 = NULL; x = 20;//给变量赋值 y = 30; p1 = &x;//把变量
  • 4、指针

    2015-12-06 14:43:00
    4、指针 【1】怎么定义指针变量 一个变量的地址称为该变量的指针;...变量的指针的含义包括两个方面,一是以存储单元编号表示的...指针变量只能存放地址(指针),不要将一个整数赋值给指针变量。 *po...
  • 指针指针就是单独的(或者说新的)数据类型,暂时不要把它跟任何东西关联。 指针如何定义的呢? 例: ...像定义普通变量的时候一样,...将变量(x)的地址赋值给指针(y),那么此时指针(y)存储的内容就是变量(...
  • 指针

    2016-11-30 22:13:35
     野指针: 定义:随机指向一块内存 容易造成的错误:内存泄漏,但是不一定每次都会产生段错误, ...当要往一个指针指向的空间赋值时,一定要先检查这个指针是否分配了空间malloc(sizeof(int))形参

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 223
精华内容 89
关键字:

如何给指针赋值地址