当前位置:首页 » 编程语言 » c语言指针的0
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言指针的0

发布时间: 2022-08-01 01:14:34

‘壹’ c语言中指针p!=0和p!=NULL一样吗

应该来说是不一样的因为NULL是宏,虽然被定义为0,但是开发人员如果自己定义了NULL不为0两者就不一样了

‘贰’ C语言指针赋值0会产生什么结果

不会产生什么结果,这样初始化后,可以用来判断这个指针是否被分配过地址,或者是否指向某个地址

‘叁’ C++中的指针可以赋值为0,C语言中指针可以赋值为0吗

可以。只有0有这个特权,无论什么类型的非常指针,在任何时候都可以直接赋0值来表示这个指针不可用。

‘肆’ C语言指针变量赋值0是什么意思

其实这种现象在C语言中是有定义的。
值为0的整形常数表达式或强制转换为void *类型的表达式可通过强制类型转换、赋值或比较操作转换为任意类型的指针。其结果将产生一个空指针。

‘伍’ C语言中 零指针/类型指针 怎么使用

void*类型指针表示此指针可以指向任何类型,定义时它没有类型,为空类型,所以必须强制性转换;
零指针的作用就是防止指针指向一个不确定的内存空间而引起错误,因为指针在定义完之后必须进行初始化,使其指向一个确定的内存空间,否则的话,它就是一个不确定的指针,容易引起错误!!
下面一个好,是正确的;但是上面那个有问题,因为p指针没有初始化,没有确定指向一个内存空间,是错误的,应该把*p=i;
改为p=&i;就好了
(要转换成的数据类型)要转换的变量,
例如(int)a;就是把a强制转换成int类型!!

‘陆’ c语言指针用法

1、使用场景

使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示:

#include<stdio.h>

#include <stdlib.h>

int main(int argc, char const *argv[])

{

int a[5]={0,1,2,3,4};

int *b,*d;

int c=2;

int *e=a; //e指向a数组首地址

//*b=2; 无法直接初始化

//printf("%d ", *b);

e=e+2; //移动两个地址单元

d=&c; //d指向c的地址来表示值

c=4; //修改原c变量的值,d指针的值会发生改变

b=(int *)malloc(sizeof(int));//为b分配一个int型空间来直接存储

*b=2;//分配空间后可以直接赋值了

printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);

2、类型说明

(1)int *a :表示一个指向int型变量的指针,指向的是变量的地址单元

(2)char *b:表示一个指向char变量的指针

*a表示的是这个指针指向地址的值,a为此指针本身的地址,这点要明确,一般用*(a+1)、*(a+2)来表示值,如:

int nums[5]={0,1,2,3,4};

int *a=nums;

printf("%d %d %p ",*a,*(a+1),a);

(6)c语言指针的0扩展阅读:

指针的运算

指针指向变量地址,若原变量的内容发生了变化,它本身也会发生变化,指针之间的运算一般为值运算和地址运算

(1)值运算:直接通过*运算方式,像a+*(a+1),结果为第一个元素与第二个元素相加。

int nums[5]={0,1,2,3,4};

int *a=nums;

(2)地址运算:通过a+i的方式.指针会指向a的下i个地址。

int nums[5]={0,1,2,3,4};

int *a=nums;

a=a+2;

printf("%d ",*a);

结果输出2。

参考资料来源 :指针-网络

‘柒’ c语言中指针的指针会等于0吗

假如有一个指针P,语句if(p==0);和语句if(p==NULL)是同一个意思,其实NULL 就是 一个 为0 的宏。可能你提问的方式会让很多人不懂,估计你就是想要我说的这个意思的吧。

‘捌’ c语言指针的指针的理解

指针,即指向数据的储存地址,方便计算机寻找数据,可以指向变量,函数,数组,甚至指向指针(如int **point),组合起来,好多方式。定义并指向一个变量后,没*,point代表变量地址,有*,代表地址里的值即变量值,指向指针的指针**point分开理解,首先指向*point,而*point代表变量的值

‘玖’ C语言中*p=0表示

也得看p的定义了
如果int *p;*p=0;则是把p执行的int空间的值修改为0
如果int **p;*p=0;则是把指向int空间的指针置为0。
上面这几个例子,都得考虑p是否指向了有效内存位置,否则是危险的操作。

完整的范例:
int a;
int *p=&a;
*p=0;
相当于p指向的int空间,即a的值被改为0了

如果p是更多级的指针或是指向更复杂的内存,可以把一级指针之外的内容看成一个整体,比如:
int **p;
可以先 typedef int *IntPointer;
IntPointer *p;
然后*p=0;
就是把p指向的IntPointer空间的值置为0.
诸如此类。

‘拾’ C语言中空指针0与NULL相同吗

C语言的0和NULL的确是相同的,NULL其实是一个#define定义,在每一种C语言编译器中都有头文件来定义NULL这个符号,NULL的定义类似于这样:
#define NULL 0
所以空指针0和空指针NULL是一回事。