指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?相关的知识,希望对你有一定的参考价值。

null表示空,指针变量不等于空,一般表示到末尾或结束。如链表最后一个结点指针域为null,如果指针变量=null,就表示到了链表末尾。
要看具体情况而言。
参考技术A 如果只声明指针变量, 是没有默认值的, 是碰巧内存分配的一个地址, 不是默认为NULL

所以好的编程习惯, 总是声明是手动为之赋值
int *p=NULL;追问

那指针变量声明后,没有给它赋值,就会碰巧内存分配一个地址吗,这个随机内存分配的,是某个变量的地址值,还是一个指针变量的内存空间啊??

那个内存中随机分配的一个地址,是该指针变量的内存地址,还是指针变量里面的值,即某个变量的地址呢?

追答

"碰巧""随机"这样的字眼可能不太严谨, 但便于理解
分配的是指存指针变量的内存空间

指针本身是一个变量, 也需要内存空间来储存它, 声明时可利用的或者说空闲的地址就会挑出一个, 来存储指针本身,
但我们知道, 内存位置里面总是有东西的, 有001011...这样的二进制值,
比方说 声明指针 int *p , 若不赋值NULL, *p就会尝试去理解指针变量的初始值如001011...这样的东西 以为是个int 型变量地址, 然后去寻址取出这个int变量的值
而这种行为有时不是我们想要的, 容易引起错误, 所以声明为NULL其实是一种约定, 提醒指针本身并未赋值, 里面的值不可用, 直到指针被正式赋值

参考技术B int *p1;//声明一个指针变量,它指向的值是不确定的
int *p2=0;//就是int *p2=NULL,为空值
参考技术C 指针变量声明后改指针的值是指针指向变量的地址。
当你的程序结束后需将指针指向NULL,否则有可能出现野指针!追问

那如果指针变量声明了后,没有为它指向一个变量的地址呢??此时它的值是什么呢?是不是就是Null 空了呢?

追答

指针不赋值的话是一个随机的值!

你可以定义一个指针不给他复制!
然后printf打印下这个指针的值,自己试一下!

参考技术D 自己写等与NULL

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 对stringchar 使用 UTF16 编码,但底端与 ASCII 重叠。你可以参考一个ASCII图表here。 @Llama 我想我开始明白了。所以 '\0' 等价于 ASCII 码 0 但不等价于键盘字符 0? @DDishawn 确实如此。键盘字符 0 用 ASCII 码 48 表示。 @DDishawn \0 是ASCII空字符,它不是字面意义上的空,这只是它的名字,它与编程中的空变量不同,\0有相当的历史,你可以阅读它Wikipedia page

以上是关于指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?的主要内容,如果未能解决你的问题,请参考以下文章

char 类型变量的默认值是啥意思,它等同于啥字符?

点击修改的时候if判断的默认选中--condition中的值是啥意思

c语言中float类型变量的默认初始值是啥?

c语言中的RETURN()返回值是啥意思?

不能将int类型的值分配到int类型的实体,是啥意思?例如int *a[10];a[0]=j-i;(i、j均为指针)。

C中指向char的指针的默认值