指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?相关的知识,希望对你有一定的参考价值。
null表示空,指针变量不等于空,一般表示到末尾或结束。如链表最后一个结点指针域为null,如果指针变量=null,就表示到了链表末尾。要看具体情况而言。 参考技术A 如果只声明指针变量, 是没有默认值的, 是碰巧内存分配的一个地址, 不是默认为NULL
所以好的编程习惯, 总是声明是手动为之赋值
int *p=NULL;追问
那指针变量声明后,没有给它赋值,就会碰巧内存分配一个地址吗,这个随机内存分配的,是某个变量的地址值,还是一个指针变量的内存空间啊??
那个内存中随机分配的一个地址,是该指针变量的内存地址,还是指针变量里面的值,即某个变量的地址呢?
"碰巧""随机"这样的字眼可能不太严谨, 但便于理解
分配的是指存指针变量的内存空间
指针本身是一个变量, 也需要内存空间来储存它, 声明时可利用的或者说空闲的地址就会挑出一个, 来存储指针本身,
但我们知道, 内存位置里面总是有东西的, 有001011...这样的二进制值,
比方说 声明指针 int *p , 若不赋值NULL, *p就会尝试去理解指针变量的初始值如001011...这样的东西 以为是个int 型变量地址, 然后去寻址取出这个int变量的值
而这种行为有时不是我们想要的, 容易引起错误, 所以声明为NULL其实是一种约定, 提醒指针本身并未赋值, 里面的值不可用, 直到指针被正式赋值
int *p2=0;//就是int *p2=NULL,为空值 参考技术C 指针变量声明后改指针的值是指针指向变量的地址。
当你的程序结束后需将指针指向NULL,否则有可能出现野指针!追问
那如果指针变量声明了后,没有为它指向一个变量的地址呢??此时它的值是什么呢?是不是就是Null 空了呢?
追答指针不赋值的话是一个随机的值!
你可以定义一个指针不给他复制!
然后printf打印下这个指针的值,自己试一下!
char 类型变量的默认值是啥意思,它等同于啥字符?
【中文标题】char 类型变量的默认值是啥意思,它等同于啥字符?【英文标题】:What does the default value of a char type variable mean and what character does it equate to?char 类型变量的默认值是什么意思,它等同于什么字符? 【发布时间】:2022-01-22 13:42:08 【问题描述】:如果我声明了一个 char 类型的字段并且不对其进行初始化,它会被分配一个默认值 '\0'
。 '\0'
是什么意思? '\0'
等于什么字符(来自键盘)?
public class Program
public static char test;
public static void Main()
Console.WriteLine($"---test---"); // output: ------
【问题讨论】:
【参考方案1】:每个字符都映射到一个数字。例如,小写的“a”映射到 97,而大写的“A”映射到 65,制表符映射到 9。也就是说,如果有字符直接转换为整数,那么这些就是你得到的值。
\0
字符映射为 0。此外,在许多较旧(和某些当前)系统中,\0
字符用于标记字符串的结尾(.NET 使用不同的系统)。
【讨论】:
【参考方案2】:键盘上通常没有字符,尽管在某些情况下 ctrl+@ 可能会生成它。面向文本的输出往往会有效地忽略它。
'\0'是编码为零的字符;在 ASCII 中,它的名称是 NUL。
【讨论】:
当你说'\0'是编码为零的字符你是说'\0'的等价物是数字0吗? @DDishawn 虽然 .NET 对string
和char
使用 UTF16 编码,但底端与 ASCII 重叠。你可以参考一个ASCII图表here。
@Llama 我想我开始明白了。所以 '\0' 等价于 ASCII 码 0 但不等价于键盘字符 0?
@DDishawn 确实如此。键盘字符 0 用 ASCII 码 48 表示。
@DDishawn \0 是ASCII空字符,它不是字面意义上的空,这只是它的名字,它与编程中的空变量不同,\0有相当的历史,你可以阅读它Wikipedia page以上是关于指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?的主要内容,如果未能解决你的问题,请参考以下文章
点击修改的时候if判断的默认选中--condition中的值是啥意思