首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

指针初始化

引用: https://blog.csdn.net/qq_43574794/article/details/84864349 https://baike.baidu.com/item/指针初始化/3527092...编译结果如下: a未初始化,到底指向哪里根本我们不得而知。所以我们在进行赋值操作的时候可能有下面几种情况: 1.a的初始值是一个非法地址,赋值语句出错,程序终止。...2.可能指针包含一个合法化的地址,而赋值语句更改了它。 所以在使用指针的时候一定要确保指针已经初始化了。...当我们不知道给指针变量初始化什么的时候我们一般初始化为NULL: #include #include int main() { int* a = NULL;...*a = 1; system("pause"); return 0; } 编译结果也是有问题的: 这是因为NULL指针是一个特殊的指针变量,不指向任何内存,用来表示这个指针目前未指向任何位置

34130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言指针初始化和赋值

    1、指针初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。...p1 = p2; //注意啦,p1指向了val2,而没有指向val1 备注:字符串与指针初始化和赋值 初始化: char *cp = “abcdefg”; //这个初始化过程,是将指针cp指向字符串的首地址...void *类型,则称为空指针常量,它可以用来初始化或赋给任何类型的指针。...要注意的是:对于一个不确定要指向何种类型的指针,在定义它之后最好把它初始化为NULL,并在解引用这个指针时对它进行检验,防止解引用空指针。...6、指向指针指针指针初始化的第5种方式中提到了用一个指针的地址来初始化一个指针。回忆一下上一讲的内容:指针是一种变量,它也有自己的地址,所以它本身也是可用指针指向的对象。

    2.5K10

    【编程基础】C语言指针初始化和赋值

    1、指针初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。...p1 = p2; //注意啦,p1指向了val2,而没有指向val1 备注:字符串与指针初始化和赋值 初始化: char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的首地址...void *类型,则称为空指针常量,它可以用来初始化或赋给任何类型的指针。...要注意的是:对于一个不确定要指向何种类型的指针,在定义它之后最好把它初始化为NULL,并在解引用这个指针时对它进行检验,防止解引用空指针。...6、指向指针指针指针初始化的第5种方式中提到了用一个指针的地址来初始化一个指针。回忆一下上一讲的内容:指针是一种变量,它也有自己的地址,所以它本身也是可用指针指向的对象。

    2.7K80

    android之List的空指针问题_List的初始化

    在使用list做东西的时候出现空指针,查了半天资料 本来是这样的 List model; LunchListAdapter adapter;//这是我重写的适配器 @Override...//省略} 重点在倒数两行,本来我把List的初始化放在了onCreate里面,心想应该没有问题的,activity启动之后就会对它初始化了,后来我尝试着在第一行就初始化,结果就不报空指针异常, 后来发现...,在初始化之前竟然把他当参数传了出去,结果就导致了空指针异常....//省略} 虽然很简单,但还是要总结一下的,空指针害人太深. 对于List的初始化还是有些讲究的....还有,关于空指针错误真的是很困扰人的一件事情,所以最好的解决方式就是在使用前 一定要保证完成正确的初始化.

    69520

    C++使用new来初始化指向类的指针

    C++指针初始化问题 c++中的指针是一个很经典的用法,但是也是最容易出错的,比如定义了一个指针,必须对其进行初始化,不然这个指针指向的是一个未知的内存地址,后续对其操作的时候,会报错。...下面就总结一下c++指针初始化的一些方法,以及我自己遇到的一些问题以及心得体会。...c++指针初始化的一般方法 1.将一个已经在内存中存在变量的地址传递给定义的指针 这个指针就指向这个变量的内存地址(相同的数据类型),完成初始化。...3.把指针设置为NULL或者0 这样做一般只是为了没有具体初始化的时候做的,这样避免了野指针,后面可以使用if(指针==NULL)来判断,然后再进行操作。...自己遇见的问题 我在使用结构体指针的时候,忘记将结构体指针初始化,导致后面访问结构体成员变量的时候出现错误(那种编译没错,执行出错的问题),后来将指针使用new初始化解决,还有一点就是,全局的变量名称与局部变量名称不要一样

    42820

    C++中关于指针初始化和使用NULL的理解

    1、严禁使用未被初始化指针:C++创建指针的时候,只分配存储地址的内存,并不会分配存储数据的内存,所以指针可能指向任何位置。   ...(1)使用解除运算符(*)之前,一定要对指针初始化,否则若声明的指针刚好指向程序代码的位置会导致一些很隐蔽的错误。    (2)未被初始化之前禁止指针之间的赋值。...2、对NULL的理解 一开始想不明白:如果给一个指针初始化成NULL之后不是就代表,指针指向一块内存单元了吗,那应该可以直接往里面填值,可是实际却不可以。...首先看一下百科中一段关于NULL的描述: NULL的出现是一种约定俗成,事实上它不是C语言中的关键字;把一个指针赋值为NULL,通常的说法是“将指针悬空”。这样,指针就无法再进行任何数据访问了。...所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。 前面说到“NULL指针无法再进行任何数据访问”,其实是视编译器功能而定的。

    2.7K100

    链表—初始化指针变和创建新的节点------区别应用分析

    第二: 初始化一个指针变量 SListNode* cur = NULL; 这行代码将plist指针赋值给cur变量,它们指向同一个内存地址。...这样做是为了初始化一个指针变量,可以在后续的操作中用来指向链表的某个节点。 2.应用场景: 第一行代码通常用于创建新的节点或对象,例如在链表中插入新节点时,需要动态地分配内存空间来存储新节点的数据。...3.举例说明--链表 在C语言链表中,需要初始化一个指针变量的情况有两种: 创建链表时,需要初始化一个指向链表头节点的指针变量。 这样可以方便地遍历链表和操作链表。...遍历链表时,需要初始化一个指向当前节点的指针变量。...这样可以方便地通过指针变量访问当前节点的数据和下一个节点。例如: struct Node* temp = head; // 初始化指向当前节点的指针变量 while (temp !

    6010

    【慢雾科技】以太坊 Solidity 未初始化存储指针安全风险

    其实就是 Unintialised Storage Pointers(未初始化的存储指针)的安全问题,EVM中会将数据存储为 storage 或 memory ,在函数中局部变量的默认类型取决于它们本身的类型...,未进行初始化的 storage 变量,会指向合约中的其他变量,从而改变其他变量的值,常见的场景就是指向状态变量,改变状态变量的值,导致漏洞的产生。...Pointers 的问题, p 会被当成一个指针,并默 认指向 slot[0] 和 slot[1] ,因此在进行 p.name 和 p.mappedAddress 赋值的时候,实际上会修改变量 testA...数组 Unintialised Storage Pointers 问题的正确解决方法是在声明局部变量 x 的时候,同时对 x 进行初始化操作。 ?...最后,本篇未涉及的 mapping 未初始化存储指针的安全问题和案例,期待能够和师傅们一起研究讨论。 3, 参考链接 1)《警惕!

    1.1K30

    CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

    指针和野指针指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。...空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针...,这样很危险,但如果养成将指针初始化为空指针的习惯,我们就能判断出这个指针是不是有效的(判断是不是NULL就可以了)通用指针一般都用在函数传参,实现所谓的“多态”,但到函数里面使用时,一般还是被转换成具体类型的指针...PS: 内存映像象图 内容 权限 栈区 函数中的普通变量 可读可写 堆区 动态申请的内存 可读可写 静态变量区 static修饰的变量 可读可写 数据区 用于初始化变量的常量 只读 代码区 代码指令 只读...初始化arr的{“hello”, “world”, “shannxi”, “xian”};的是什么鬼?

    1.7K30

    CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

    普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别...空指针和野指针指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。...空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针...,这样很危险,但如果养成将指针初始化为空指针的习惯,我们就能判断出这个指针是不是有效的(判断是不是NULL就可以了)通用指针一般都用在函数传参,实现所谓的“多态”,但到函数里面使用时,一般还是被转换成具体类型的指针...PS: 区分指针数组int *a[3]和数组指针int (*a)[3],前者时存放指针的数组,后者是指向数组的指针

    1.7K20

    数组指针指针指针

    概念 我们把指向数组的指针叫做数组指针,后面还会学到指针数组,这两个是不一样的,根据中学语文偏正词组的知识可以知道,前者是指针,后者是数组。...注意:二维数组名a不可以赋值给一般指针变量p,只能赋值给二维数组的行指针变量。 行指针变量 行地址和列地址 先看一个代码。...行指针是一种特殊的指针变量,专门指向一维数组。...使用二维数组的行地址初始化。 行指针定义: int a[2][3]; int (*p)[3]; 不可写成 int (*p)[2],因为二维数组a每行有四个元素。...初始化: p=a; 或: p=&a[0]; 用法:表示a[i][j]的四种方法: p[i][j] *(p[i]+j) *(*(p+i)+j) (*(p+i))[j] 列指针 定义: int *p; 初始化

    12710

    初识指针指针指针变量、如何理解地址、指针类型的意义、void*指针、野指针、空指针)(笔记)

    解引用 return 0; } 二、指针指针变量 指针:地址 指针变量:变量-存放地址 指针变量用来存放地址的,指针变量并不完全等同指针...指针初始化 2.指针越界访问造成野指针 3.指针指向的空间释放 1....指针初始化 int main() { int* ptr;//野指针,没有初始化 *ptr = 20;//非法访问内存了 printf("%p\n", ptr); return 0; } 2....1.指针初始化 如果明确知道指针指向哪里就直接赋值地址,如果不知道指针应该指向哪里, 可以给指针赋值NULL。...使用空指针进行解引用操作会导致程序崩溃,因为没有任何有效的内存地址可供访问。在C语言中,空指针主要用于表示指针变量没有指向任何有效的内存地址,例如未初始化指针变量或已释放的内存块。

    14710

    【C语言】指针进阶:字符指针&&数组指针&&函数指针

    指针数组 数组指针 &数组名 与 数组名 数组指针的使用 数组传参、指针参数 一维数组传参 二维数组传参 一级指针传参 二级指针传参 函数指针 结语 前言 回想之前,我们学了指针的一些基础 指针与结构体...指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 指针的运算。...C/C++会把常量字符串存储到单独的一个内存区域,当指针指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。...指针数组 在前面的时候,我们就认识了指针数组,指针数组是一个存放指针的数组。...有的,下面,我们来看看什么是数组指针 数组指针 数组指针指针?还是数组? 答案是:指针。 整形指针: int * pint; 能够指向整形数据的指针

    2.8K20
    领券