指针变量*p=100为什么可以
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/06 04:03:06
数据名实质上是一个指针常量(即一个具体的地址值).当把一个指针变量p指向一个数组A[]时,其实就是把数组名A这个指针常量赋给了指针变量p,此时p与A是等价的,p[i]即A[i].而指针变量的+1操作,
&x是指x的地址,相当于指针p,指针p前加*以后就表示指向指针的指针
这样做很不好,你可以在编译器下试试,这种做法编译器都不允许,更何况咱们自己分析呢,intx;实在栈区分配的内存,因为这是属于静态区的变量而int*pa;是动态堆区变量,两个所属区域都不同,赋值肯定是有
楼主肯定是想要这个!须注意的地方:赋值双方的类型必须相同!》》》对于人,才有void,int,float,int*.等类型,对于机器,一切皆为0,1!顺便提醒一句:玩弄奇技淫巧者,小人也!楼主不要走火
p=EOF,p不是空指针.EOF定义是-1.其他三个p都等于0.指针可以相减,获得两指针之间的距离,就是相隔多少个指针类型的数据.可以赋值,可以比较指针是否相等.但不能相加.赋值语句*pa=&a是将a
二维数组里的a是二维指针,其实二维指针有两个指针,行指针与列指针,你定义的指针p只是一维指针,如果你这样定义p:int(*p)[3],这就是一个二维指针变量,就可以用p=a了,再问:二维指针是不是就是
两个指针相加,没有意义.就好像宾馆房号一样,两个房号相加,没有意义,但房号可以加上一个整数,你住在601房间,我的房间标号比你的大5.
答案是ap是个int型数据,
//int *p=100 是错的int v;int *p=&v;*p=100;//是对的int *p2=&v;//int *
int*p=&x;
#defineNULL(void*)0因为NULL是(void*)类型,而任何指针都可以(显性或隐性地)转化成(void*),这使得比较成为可能.int(*p)(int);//函数指针,可以用来指向任
首先(*p)[3]是一个指针数组,意思就是p这个指针是指向一个含有3个元素的数组的,那么p指针每一次加1就相当于把p中存的地址加6(前提是int类型占2个字节,在VC中是占4个字节).举个例子:int
*p=NULL是将p指向的内存赋值为NUll,而p本身不会变.p=NULL是改变了p本身的值,将它指向的地址改为NULL满意请采纳!再问:但是地址有NULL么,好像没有这个地址吧?再答:就是没有这个地
虽然所有的指针都只占四个字节,但不同类型的变量却占不同的字节数.一般来说,int占四个字节,char占一个字节.如果定义指针变量不定义类型,那么它在取*也就是取其中的值的时候,就不知道应该读取几个字节
inta=1;int*p=&a;p是指针变量,p指向a;(注:此时*p表示p指向a的值,即*p和a值是一样的)//当然也可以通过p改变a的值*p=3;//此时a也等于3
c语言p[i]中的中括号[]不是标点符号,而是地址“运算符”(C语言奇葩之一).p[i]地址等于p+i执行下面语句,可以看看,它们是地址,两种计算方法得到的一样吧!doublep[]={1,2,3,4
a是一个地址(例如是数组名),当然也能是一个指针变量.再问:a�ȼ���&a[0]��再答:�ȼۣ���Ϊ��������ǵ�һ��Ԫ�صĵ�ַ��再问:�Dz��Ǿͱ�ʾ��һ��Ԫ�أ������Ԫ
const在程序中都不是声明常量的意思,而是表示只读,下面代码就不能*p1=这样来赋值
NULL是一个事先定义的宏#defineNULL0所以二者写法等价.为什么常见指针这样比较,而不是其他整形这么写?原因是约定俗成,一般的,NULL表示空指针.事实上你也可以这么来:inta;if(a!
EOF是一个宏,原型是#defineEOF(-1)第二项:0与null都是空值.第三项:只是一个'\0',也是空值.第四项:不用说了吧