定义int *p;p=NULL和p=0还有p=‘\0’的意思一样么?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/16 06:20:00
定义int *p;p=NULL和p=0还有p=‘\0’的意思一样么?
那有没有*p=NULL和*p=0还有*p=‘\0’这些写法?
那有没有*p=NULL和*p=0还有*p=‘\0’这些写法?
NULL ,0,'\0',这几种写法一样,值都是0
在很多编译器中#define NULL 0这样宏定义的都是给p的值赋值0,'\0'就是0,不过是以字符的形式,
因此他们是相同的
有*p=NULL,*p = 0,*p = '\0‘,这样的写法,不过他们的意思是说,给p这个指针指向的空间赋值为0
但是,不要先把p赋值为0,然后这样写,因为大多数编译器规定,内存为0的地方不能写操作,这是为了保护这个内存空间,因此只要不写在一块,都可以
这样写:
file1.c
#include
void main()
{
\x09int *p = &i;
\x09p = NULL;
\x09p = 0;
\x09p = '\0'
}
file2.c
#include
void main()
{
\x09int i = 23;
\x09int *p = &i;
\x09*p = NULL;
\x09*p = 0;
\x09*p = '\0';
}
再问: 我写p=NULL,然后输出*p,什么都没有,连0都没有。。。怎么回事?
再答: 哥们,你的p=NULL 只是把p的地址赋予0,不是给*p赋值为0 你看啊,你的地址是0,但是你输出的是*p,即p指向的空间的值,那怎么会有值呢, 您还要让*p=23; 这样就行了,很多时候把定义一个指针的p赋值为NULL是为了,防止它乱指向 不然会乱的, 但是你可以输出p的值是0,
再问: 哥们。。。还有问题。。。 #include void main() { int *p; p=NULL; *p=23; printf("%d,%d\n",p,*p); } 然后输出来还是啥都没。。。
再答: 同学,我说的不是你直接赋值,这样是不行的,我第一次给你写的,你再看看, 你现在把p的地址赋予0 0地址是不允许写的,因为操作系统和编译器保护着呢, 所以你看看我给你的那两个file1.c,file2.c 你要想给p的地址赋值0可以,但是不能,在它指的空间赋值 你要想给p指向的空间赋值可以,但是,它的地址不能是0 我上面故意把它们写成两个文件 你这个程序正好,又把它们放在了一块, 呵呵,其实这点没有必要,纠结,你是初学,其实给指针赋值为0 是很常见的,但是那都是为了防止,指着没有初始化,乱指向,后面的学习你会慢慢的明白的
在很多编译器中#define NULL 0这样宏定义的都是给p的值赋值0,'\0'就是0,不过是以字符的形式,
因此他们是相同的
有*p=NULL,*p = 0,*p = '\0‘,这样的写法,不过他们的意思是说,给p这个指针指向的空间赋值为0
但是,不要先把p赋值为0,然后这样写,因为大多数编译器规定,内存为0的地方不能写操作,这是为了保护这个内存空间,因此只要不写在一块,都可以
这样写:
file1.c
#include
void main()
{
\x09int *p = &i;
\x09p = NULL;
\x09p = 0;
\x09p = '\0'
}
file2.c
#include
void main()
{
\x09int i = 23;
\x09int *p = &i;
\x09*p = NULL;
\x09*p = 0;
\x09*p = '\0';
}
再问: 我写p=NULL,然后输出*p,什么都没有,连0都没有。。。怎么回事?
再答: 哥们,你的p=NULL 只是把p的地址赋予0,不是给*p赋值为0 你看啊,你的地址是0,但是你输出的是*p,即p指向的空间的值,那怎么会有值呢, 您还要让*p=23; 这样就行了,很多时候把定义一个指针的p赋值为NULL是为了,防止它乱指向 不然会乱的, 但是你可以输出p的值是0,
再问: 哥们。。。还有问题。。。 #include void main() { int *p; p=NULL; *p=23; printf("%d,%d\n",p,*p); } 然后输出来还是啥都没。。。
再答: 同学,我说的不是你直接赋值,这样是不行的,我第一次给你写的,你再看看, 你现在把p的地址赋予0 0地址是不允许写的,因为操作系统和编译器保护着呢, 所以你看看我给你的那两个file1.c,file2.c 你要想给p的地址赋值0可以,但是不能,在它指的空间赋值 你要想给p指向的空间赋值可以,但是,它的地址不能是0 我上面故意把它们写成两个文件 你这个程序正好,又把它们放在了一块, 呵呵,其实这点没有必要,纠结,你是初学,其实给指针赋值为0 是很常见的,但是那都是为了防止,指着没有初始化,乱指向,后面的学习你会慢慢的明白的
int *p 下面三种操作一样吗?p=NULL,p='\0',p=0
定义int x=0,*p; 紧接着编写语句,问哪句是对的?为什么?A p=NULL; B *P=x;
p是个指针,如果定义p=NULL,那么p->weight是0还是NULL,p->next又是什么?下面是我定义的结构体
定义数组a[ ],为什么int *p=&a[0];等于int *p; p=&a[0];
#define SAFE_RELEASE(P){if(p){(p)->Release();(p)=(NULL);}}
两道关于null的c语言题目:1 设有定义:int x=0,*p;立刻执行以下语句,正确的是:a.p=x; b.*p=x
求解一道C语言 int x=0,*p; 立刻执行下列语句 正确的是 A.p=x B.*P=X C.p=NULL D.*P
定义指针int *p p=a,p=&a,*p=a,*p=&a,这四个的区别!
int *p=NULL表示什么意思?
若有一些定义和语句#include int a=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;
设有如下定义:int a,*p,*p1 = NULL,*p2 = NULL,sum[2] = {1,2};以下指针变量p
.若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; 则++(*p)的值是___3__.