C语言中,定义一个指针的时候为这个指针开辟存储空间吗?

C语言中,定义一个指针的时候为这个指针开辟存储空间吗?,第1张

int p :一级指针,表示p所指向的地址里面存放的是一个int类型的值,声明p为指向整型数的指针,这时为这个指针分配了存储空间。但这时其中是随机数,我们称它为指向一个不确定的内存地址。

用户说的“直接p=5”,那么就会在一个无法预知的内存地址写入一个整型数5。这是不允许的,可能导致程序崩溃。

p=&a; 则是把已有的变量a的地址写入指针p,我们称使指针指向a 可以通过p对变量a正常 *** 作。

扩展资料:

指针:

指针的表现形式是地址,核心是指向关系指针,运算符“”的作用是按照指向关系访问所指向的对象.如果存在A指向B的指向关系,则A是B的地址,“A”表示通过这个指向关系间接访问B。

如果B的值也是一个指针,它指向C,则B是C的地址,“B”表示间接访问C,如果C是整型、实型或者结构体等类型的变量或者是存放这些类型的数据的数组元素,则B(即C的地址)是普通的指针,称为一级指针,用于存放一级指针的变量称为一级指针变量。

参考资料来源:百度百科-二级指针

s是数组名,对数组名改变数值是错误的语句!
s=(char)malloc(sizeof(char)1000);
这是错误的!
s[0]=(char)malloc(sizeof(char)1000);
//这才是分配s[0]

我感觉没有必要用二级指针,我们的目的主要是为了让主函数中的指针的地址指向一个空内存。我们完全可以通过传递这个指针的地址到子函数中,然后给这个指针的地址分配内存就可以了。例如下面这个程序就是正确的。根本没有必要使用到二级指针呀。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13377768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存