精华内容
下载资源
问答
  • 指针变量初始化

    千次阅读 2017-11-18 11:09:11
    //若指针变量初始化空,在使用指针时,必须判断是是否为空,两个步骤必须同时存在 if(p!=NULL) *p = 20; system("pause"); return 0; } int main() { int num = 0; int *p = (int*)# *p = 20; ...
    int main()
    {
    int *p = NULL;//若指针变量初始化空,在使用指针时,必须判断是是否为空,两个步骤必须同时存在
    if(p!=NULL)
    *p = 20;
    system("pause");
    return 0;


    }


    int main()
    {
    int num = 0;
    int *p = (int*)#
    *p = 20;
    system("pause");
    return 0;
    }
    展开全文
  • 先是定义私有静态变量,然后静态代码块初始化。 ![图片说明](https://img-ask.csdn.net/upload/201811/09/1541745043_546543.png) 标红这行报错,空指针异常。 个人疑问,是否是因为B/S结构...
  • 指针变量定义和初始化

    千次阅读 2019-04-17 08:16:47
    1.指针定义和初始化 2.指向数组的指针 指针数组 指针定义 ...指针变量初始化 语法形式 存储类型 数据类型*指针名=初始地址; 例: int *pa = &a; 注意事项 用变量地...

    1.指针定义和初始化

    2.指向数组的指针

    指针数组

    指针定义

    类型 * ptr = xxx;

    指针运算    *   寻址过程,根据地址找到内存单元,然后把里面的值给取出来。

     

    取地址运算  &

     

     

    指针变量的初始化

    • 语法形式

    存储类型 数据类型 *指针名=初始地址;

    • 例:

    int *pa = &a;

    • 注意事项

      • 用变量地址作为初值时,该变量必须在指针初始化之前已声明过,且变量类型应与指针类型一致。

      • 可以用一个已有合法值的指针去初始化另一个指针变量。

      • 不要用一个内部非静态变量去初始化 static 指针。

    指针变量的赋值运算

    • 语法形式

    指针名=地址

    注意:“地址”中存放的数据类型与指针类型必须相符

    • 向指针变量赋的值必须是地址常量或变量,不能是普通整数,例如:

      • 通过地址运算“&”求得已定义的变量和对象的起始地址

      • 动态内存分配成功时返回的地址

    • 例外:整数0可以赋给指针,表示空指针。

    • 允许定义或声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。

    例: void *general;

     

    思考一下为什么可以定义void * ptr,

    答案: 因为这个指针本身占4个字节,void表示它指向的地址的内存单元占多少个字节不知道。但是ptr本身是存放地址的,在32位系统里占4个字节。64位系统里占8个字节。

    void * ptr被初始化的时候,会告诉它 ptr所指向内存单元占几个字节。这里定义的时候,可以不用知道,所以是void类型。在初始化时候,知道就可以了。

     

    指针空值nullptr

    • 以往用0或者NULL去表达空指针的问题:

      • C/C++的NULL宏是个被有很多潜在BUG的宏。因为有的库把其定义成整数0,有的定义成 (void*)0。在C的时代还好。但是在C++的时代,这就会引发很多问题。

    • C++11使用nullptr关键字,是表达更准确,类型安全的空指针

    例6-5 指针的定义、赋值与使用

    //6_5.cpp

    #include <iostream>

    using namespace std;

    int main() {

    int i; //定义int型数i

    int *ptr = &i; //取i的地址赋给ptr

    i = 10; //int型数赋初值

    cout << "i = " << i << endl; //输出int型数的值

    cout << "*ptr = " << *ptr << endl; //输出int型指针所指地址的内容

    return 0;

    }

    运行结果:

    i = 10

    *ptr = 10

    例6-6 void类型指针的使用

    #include <iostream>

    using namespace std;

    int main() {

    //!void voidObject; 错,不能声明void类型的变量

    void *pv; //对,可以声明void类型的指针

    int i = 5;

    pv = &i; //void类型指针指向整型变量

    int *pint = static_cast<int *>(pv); //void指针转换为int指针

    cout << "*pint = " << *pint << endl;

    return 0;

    }

    指向常量的指针

    • 不能通过指向常量的指针改变所指对象的值,但指针本身可以改变,可以指向另外的对象。

     int a;

    const int *p1 = &a; //p1是指向常量的指针

    int b;

    p1 = &b; //正确,p1本身的值可以改变

     *p1 = 1; //编译时出错,不能通过p1改变所指的对象

    指针类型的常量

    • 若声明指针常量,则指针本身的值不能被改变。

    int a;

    int * const p2 = &a;

    p2 = &b; //错误,p2是指针常量,值不能改变

    展开全文
  • 成员是一个指针变量,那么最好在构造函数中将指针初始化,如果不初始化,编译器并不是将此指针指向NULL。因此,当使用if(!point) 进行判断的时候就会出现错误,而且调试很麻烦。 但是当你定义一个全局...

    在c++ 中


    成员是一个指针变量,那么最好在构造函数中将指针初始化,如果不初始化,编译器并不是将此指针指向NULL。因此,当使用if(!point)

    进行判断的时候就会出现错误,而且调试很麻烦。



    但是当你定义一个全局的指针的时候,如果没有初始化,编译器会将此指针指向NULL。

    但是不建议使用默认值。不具有可读性。而且具有误导功能。让人下意识就认为编译器会将所有的默认指向NULL。

    展开全文
  • 指针p定义的同时初始化,这样可以正常运行,代码如下: #include <stdio.h> int main() { int a; int *p=&...指针初始化为空,此时不能正常运行,代码如下: #include <stdio.h> ...

    指针p定义的同时初始化,这样可以正常运行,代码如下:

    #include <stdio.h>
    int main()
    {
        int a;
        int *p=&a;
        scanf("%d",p);
        printf("%d",*p);
        return 0;
    }
    

    指针初始化为空,此时不能正常运行,代码如下:

    #include <stdio.h>
    int main()
    {
        int *p=NULL;
        scanf("%d",p);
        printf("%d",*p);
        return 0;
    }
    
    

    似乎空指针也不能使用。

    20200505新增
    关于指针、动态内存分配的若干思考
    1.变量在内存中所占存储空间的首地址,称为该变量的地址,而变量在存储空间中存放的数据,成为变量的值。(之前是因为没有认真看这句话是么,指针变量p中存放的地址都为空,还怎么能给*p赋值呢?皮之不存毛之焉附的感觉)
    2.函数malloc():用于分配若干字节的内存空间,返回一个指向该内存首地址的指针。若系统不能提供足够的内存空间,函数将返回空指针NULL
    3.释放内存后仍然继续使用
    是放了内存却仍然继续使用它——将导致产生野指针。
    当指针指向的栈内存空间被释放后,指向它的指针并未消亡,内存被释放后,指针的值其实并没有改变,他仍然指向这块内存,只不过内存中存储的数据变成了随机值(乱码)而已。释放内存的结果只改变了内存中存储的数据,使该内存存储的内容成为辣鸡,指向垃圾内存的指针,被称为野指针。
    内存被释放后,指向它的指针不会自动变成空指针,野指针不是空指针

    展开全文
  • C++ 不要忘记指针变量初始化

    万次阅读 2016-01-09 09:14:20
    可以说指针是C/C++语言编程中最给力的工具。指针,让我们直接去面对最为神秘的内存空间,赋予我们对内存进行直接操作的能力。由于指针操作执行速度快、占用内存少,众多...其中,指针初始化就是我们应当重视的问
  • 建议5:不要忘记指针变量初始化 可以说指针是C/C++语言编程中最给力的工具。指针,让我们直接去面对最为神秘的内 存空间,赋予我们对内存进行直接操作的能力。由于指针操作执行速度快、占用内存少,众 多程序员对...
  • 第8章 指针 ——指针变量的定义、初始化及解引用指针前补充的知识:*1,内存如何编址 内存中的每个字节都有唯一的编号(地址) 内存地址按字节编号,其字长一般与主机相同 32位机使用32位地址,最多支持2的32次方...
  • 空指针和未初始化指针的区别

    千次阅读 2018-06-17 18:48:31
    转载: https://blog.csdn.net/qingkongyeyue/article/details/539943551.什么指针变量定义时一定要初始化? 答:因为你首先要理解一点.内存空间不是你分配了才可以使用只是你分配了之后使用才安全,什么要进行...
  • #pragma pack(1) #pragma pack(push) ///保存对齐状态 ...#pragma pack(1) //设定1字节对齐 typedef struct ProtocolV2 {  Unit8 uHead1; //包头1  Unit8 uHead2; //包头2  Unit8 uToken ; //令牌  
  •  SparkContext初始化失败,java空指针异常 在windows上运行spark,已经按照网上步骤安装了hadoop-common-bin,配置了host和环境变量,pycharm跑起来就报下面的错误,困扰多时,希望有大佬解答。 代码如下: from ...
  • https://studygolang.com/articles/2587 参考该片文章,楼主一本正经的胡说八道,正解看评论。 全局变量初始化是在main启动之前,如果给全局变量赋初值时,赋值语句还没有初始化,全局变量nil ...
  • 空指针,指针初始化

    2013-03-12 12:37:27
    空指针指针就是用来保存内存地址的变量,因此定义一个指针后,一定要用它来保存一个内存地址, 假如我们不那么做,那么该指针就是一个失控指针,它可以指向任何地址,并且对该地址的 数值进行修改...
  • 第一种方法就是在定义指针的同时告诉指针指向的地址,第二中情况,不在定义指针的时候初始化,而是把地址直接赋值给指针变量。注意:不可以在指针不清楚指向地址的情况下给指针赋值(但是char p=0或者p=NULL除外,该...
  • 今天遇到一个小问题,声明一个全局的指针变量p1,并且通过malloc动态分配内存的方法,将一个1000Byte内存的首地址赋给p1,代码:char* p1=malloc(1000); 如下图: 但是使用 gcc 命令编译后报出如下错误(使用C99...
  • 指针变量的运算

    千次阅读 2015-08-24 10:42:47
    指针变量的运算  指针变量可以进行某些运算,但其运算的种类是有限的。 它只能进行赋值运算和部分算术运算及关系运算。... 取内容运算符是单目运算符,其结合性自右至左,用来表示指针变量所指
  • 指针初始化和赋值

    千次阅读 多人点赞 2018-01-05 17:00:58
    1、指针的初始化 指针初始化时,“=”的右操作数必须...此时,*p只是表示定义的是个指针变量,并没有间接取值的意思。 例如: int a = 25; int *ptr = &a; int b[10]; int *point = b; int *p = &b[0];   如
  • 一般我们进行成员变量初始化用两种方法 第一种是通过在构造函数内赋值 class Point { public:  Point(){ _x = 0; _y = 0;};  Point( int x, int y ){ _x = 0; _y = 0; } private:  int _x, _y; }; ...
  • 这里要注意的是,声明的是指针变量,所以若没有初始化编译时是给指针变量分配4字节,而指针里面指向一个无法确定的地址,为了安全需要我们指定相应的空间并将该空间的地址付给指针变量。除了指针
  • C语言各种变量初始化

    万次阅读 多人点赞 2018-10-07 23:19:00
    数值类变量初始化 整型、浮点型的变量可以在定义的同时进行初始化,一般都初始化为0。 int inum = 0; float fnum = 0.00f; double dnum = 0.00; 字符型变量初始化 字符型变量也可在定义的同时进行初始化...
  • 慎用为初始化变量

    千次阅读 2013-05-19 14:47:23
    c++的DEBUG版会把未初始化指针自动初始化为0xCCCCCCCC, Debug为了调试方便,也就是其Edit And Continue特性,每个函数都多分配了64个字节。当用户在调试时在代码里增加少量变量的时候,编译器就可以分配那64个...
  • C++类指针初始化

    千次阅读 2017-12-29 14:22:17
    初始化为NULL的类指针可以安全的调用不涉及类成员变量的类成员函数而不出错,但是如果类成员函数中调用了类成员变量则会出错,既然赋值NULL的情况都可以使用,那么自然不初始化的类指针同样满足这类情况。...
  • 指针变量进行运算

    千次阅读 2018-08-09 11:32:19
    C语言指针变量运算 一、相减运算 偏移量除以指针每次移位的大小。加法运算无意义。 二、关系运算 两指针变量进行关系运算可表示所指对象的关系: pf1 == pf2; //pf1和pf2指向同一元素。 pf1 &gt; pf2; //...
  • 初始化条件变量pthread_cond_init

    千次阅读 2012-12-09 22:45:57
    转自:... 1.初始化条件变量pthread_cond_init #include int pthread_cond_init(pthread_cond_t *cv, const pthread_condattr_t *cattr); 返回值:函数成功返回0;任何其他返回值都表示错误 初
  • 只声明但没有初始化变量和未声明的变量以及null/undefined的区别 1. 声明但没有初始化的...因为对于使用了 var 声明但没有进行初始化定义的变量, 其值默认 undefined. 2. 未声明的变量(1) alert(aa); 浏览器不会...
  • delphi 变量初始化

    千次阅读 2013-09-29 08:46:04
    Delphi默认初始化变量是:全局变量,类成员;函数体内的变量不会初始化: 全局变量:Delphi编译器自动对全局变量赋初值。当程序开始时,所有的整数赋0,浮点数赋0.0,指针为null,字符串为空。 因此,在源...
  • 初始化指针作为实参的两种错误总结 知识标签:指针, 错误, 传参, 测试 这个程序本是我做搜索引擎项目时出现的类似错误 现在我写了一个测试小程序,以作测试 code#include<iostream>//发生段错误,p2指向,p2...
  • C++指针初始化和赋值

    千次阅读 2020-02-27 09:47:41
    指针变量初始化 语法形式 存储类型 数据类型 *指针名=初始地址; 例: int *pa = &a; 注意事项 用变量地址作为初值时,该变量必须在指针初始化之前已声明过,且变量类型应与指针类型一致。 可以用一个已有...
  • Go初始化变量的招式

    千次阅读 2018-05-26 19:10:33
    年初的立的各种Flag,已经被我抛到九霄云外去了。2018年已经过去了一半,终于开始了第三篇文章,距离全年30篇的输出计划,仅剩27本...今天先来聊一聊Go中初始化变量的几种方式。 Go中初始化值类型的招式 Golang...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 206,933
精华内容 82,773
关键字:

如何初始化指针变量为空