有关于c语言中数组和指针变量的问题 C语言中指针变量的问题

作者&投稿:阴钩 (若有异议请与网页底部的电邮联系)
指针变量是指向一个实际内存地址的变量。而scanf函数的输入中后一个参数正好是需要一个地址来表明这个输入的数据放置在内存中的什么地方,还记得对于这样的输入
scanf("%d",&(int))
int或者可以是其他某个值类型的变量名,前面的&符号就是取他的地址。你这里P是一个指针变量,所以就不需要取地址符号了。
对于字符指针,他指向的是一个字符的地址,所以你后面的char
*a;scanf("%s",a)语句会出错,%s
是一串字符,而不是一个字符,类型不匹配,a没有办法指向字符串;而char
*string="i
love
china"这个语句中,其实并

是把后面的"i
love
china"赋值给了string,C语言中是用一连串的内存地址存放字符串的,类似于字符数组,而这样的复制语句其实是把数组的首地址进行赋值,或许你还见过这样的语句int
a[]={1.2.3};int
*p;
p=a;
这些复制都是把数组的首地址进行复制,而数组首地址是第一个元素(序号为0)的地址,所以类型是相匹配的。

指针也是地址,所以不用加&,还有char
*string="i
love
china"怎么还会是等价于char
*string;string="i
love
china"呢?这个就像,int
a=5;int
a;a=5;是一样的先定义,在赋值,和直接定义赋值是一样的

c语言指针和数组问题~

p是一个指针,他指向一个char型的变量(变量名其实就是一个地址)或char型数组,p里边存的是变量的地址或数组的首地址。注:要引用一个指针变量,必须先给指针赋初值。
*p是值存储在p这个指针所指向地址的值。
数组名存储着数组的首地址,用法类似于指针。
char *pbuffer=buffer;跟char *pbuffer=*buffer,不是同一个意思。
"char *pbuffer=buffer;" 是将buffer的地址赋值给p所指向的地址。(但是这个写法是错误的)因为 pbuffer这个指针还没有赋值,所以不能直接引用,你可以改为char *pbuffer='null';*pbuffer = buffer;
char *pbuffer=*buffer;等同于*pbuffer=buffer[0];
下面的例子是一样的。
你可以参考一下C语言书中数组的存储部分。

int
a[10]是a[0~9];而后缀++是先用后加。
所以这句*p++=i;和很重要。每次循环是a[n]=n;最后次执行是a[9]=9,但p已经指向a[10](越界),才跳出循环。
此时p=a+10,*p=a[10]。
所以会出现指针变量跳出到数组以后的内存单元

必须加上第二个p=a,没有了第二个p=a怎么出来的答案这么不靠普。
建议初学者,一步步来,搞懂基本,对于++和数组名与指针的关系,这些有关地址的一点点来,要是几种混一起,容易乱。

有关于c语言中数组和指针变量的问题
答:指针变量是指向一个实际内存地址的变量。而scanf函数的输入中后一个参数正好是需要一个地址来表明这个输入的数据放置在内存中的什么地方,还记得对于这样的输入 scanf("%d",&(int))int或者可以是其他某个值类型的变量名,前面的&符号就是取他的地址。你这里P是一个指针变量,所以就不需要取地址符号了。

c语言 指针与数组的问题。
答:p=*(p+1)相当于p[i]=p[i+1]前面的*p就相当于取当前地址变量p指向的地址空间内所表示的值 p=任何东西,就相当于改变了这个地址空间所表示的值,至于地址的值是什么不需要考虑 (p+1)括号里面的,就相当于地址位置向下挪一位,具体地址的值也是不需要考虑的,只要能取得p地址的下一个地址即...

C语言中数组指针关于p=a,p=&a等问题!!
答:a代表的是也是指针,只不过不是简单的int型指针,而是你代码中的数组指针,它与一维数组中指针的区别是:当一维数组名a++时(即步长),指针移动字节数为int型数据所占字节数,但是对于二维数组中a++时,

C语言数组与指针的问题
答:运行到第一个printf中断了一下,看到如上图结果。q恰好指向了a数组地址,实际输出的是a

C语言指针和数组的问题,急!
答:&a 、 a、 &a[0]都是一个值,指向首地址。&p1是取指针p1的地址,不是p1内容的地址。p1 p2相等,但是&p1 不等于p2。p3 与 数组a没关系,但是因为a[4]正好索引到数组a最后一个成员的下一个地址,因此正好是p1的地址。这段解释比较麻烦,画个图会明白些。简单的说,局部动态变量的空间是在...

C语言数组指针问题?
答:首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。比如你定义了int p,a[10];并且让p=a;,这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的...

C语言中数组和指针的问题。
答:数组是数组,指针是指针。a是a,a[0]是a[0]。只不过在作为sizeof、&的操作数等有限几个左值上下文之外的场合数组a会退化(隐式转换,结果的类型是元素的指针类型,丢弃了数组类型中的长度)成指向首个元素的指针&a[0],所以容易造成误解。先考虑LZ最后的表述。注意C语言中对象可以理解为被占据的...

C语言:简述一下“数组和指针的关系”?
答:一、概念 数组:数组是用于储存多个相同类型数据的集合。指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址。二、赋值、存储方式、求sizeof、初始化等 1.赋值 同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝 2.存储方式 数组:数组在内存中...

c语言初级指针和数组问题
答:第一个问题:int(*pz)[2];是定义一个数组指针,第二个问题:没有%p这种格式控制字符,建议不要这样写,改成printf("pz=%d,pz+1=%d\n",pz,pz+1); 养成好的习惯,pz=zippo;是把zippo数组的首地址赋值给指针pz,你笔直调用printf("pz=%d,pz+1=%d\n",pz,pz+1); 输出的是数组的地址,...

c语言指针和数组问题
答:p是一个指针,他指向一个char型的变量(变量名其实就是一个地址)或char型数组,p里边存的是变量的地址或数组的首地址。注:要引用一个指针变量,必须先给指针赋初值。p是值存储在p这个指针所指向地址的值。数组名存储着数组的首地址,用法类似于指针。char *pbuffer=buffer;跟char *pbuffer=*buffer...