关于C语言,*p=a[0]是什么意思呀?

作者&投稿:主父曲 (若有异议请与网页底部的电邮联系)
C语言中*p=a[0]与p=a[0]有什么区别?~

有啊,*p是个指针,他储存的是一个变量的地址。你把A[0]里的数据赋给他,是储存在那个变量中,不是在存*p中。另一个P是个变量,A[0]中的数据时存在P中
例如:int *p;
p=&b;
*p=a[0];
b==a[0] 值是放在b中
另一个是放在P中 ,不同的

*p=a[0],令p所指向地址的内容等于a[0],p是一个一级指针;
*p=&a[0],令p所指向地址的内容等于a[0]的地址,p是一个二级指针。

对于二维数组a来说:int a[5][2]; a[0]是第0行起始地址指针

因此:int *p=a[0];相当于int *p; p=a[0];的合写,即p指向a数组第0行起始位置

相当于写:int *p=&a[0][0];



c语言中*p=a是指针变量赋值语句,这种写法有两种可能意思:
1.
指针变量定义时的初始化赋值
int a[10];
int *p=a ; //这时的a是个地址,如:数组名或指针变量,表示定义指针变量p,同时,p指向地址a。 这里的*是跟随int的,用来表示p变量是int *类型。
2.
指针变量定义后,给指针变量所指内存中的数据赋值
int a=10, x;
int *p ;
p=&x ; //p指向变量x的地址
*p=a ; //这表示向p所指向的地址中存储一个数据a,a是个整型数据。p是x的地地址,*p就是x,本句相当于x=a ;
这里的*是指针变量引用操作运算符,表示引用指针中的数据
注意:
p=&x ; 很重要,指针变量必须要指向一个明确的地址,然后才能*操作,否则,未指定地址的指针变量被称为野指针,引用野指针会造成程序运行异常。

定义了一个指针p ,并且把二维数组a的第一行的指针赋值给p。
补充:二维数组a[5][2]可以看做是5个一维数组组成的数组。

int *p=a[0];等同于
int *p;
p=a[0];
就是把数组第一行,第一列(c语言中第0行,第0列)的地址赋值给指针p.
你可以用:
printf("%d",*p);看到具体值。


C语言*p=a和p=a的区别
c++语言是c语言发展起来的,所以继承了c语言几乎所有的特点,但c++语言又有自己的个性。c语言是一种面向过程的编程语言,而c++主要是面向过程的,因此c++有类的概念,而c语言就没有。c++的功能强大,编译器复杂,适合高端程序的设计和编辑,c语言的编译器简易,适合低端程序。

c语言中,指针变量p,整型变量a,p指向a;那么*p 、 p、 a、 &a是什么关系...
在这里p是指针,而*p是变量,所以*p=a是对的。什么

C语言 有关*p=a,**q=&p;的问题
int a[5]={1,2,3,4,5};int *p=a,\/\/此时p指向a[0],也就是1 q=&p;\/\/此时q指向p printf("%d\\n",*(p++));\/\/这句相当于下面的两句的合并:\/ printf("%d\\n",*p);\/\/按照p寻址并输出,此时p指向a[0],于是输出1 p=p+1;\/\/p指针向前移动,此时p指向a[1],也就是2 \/ pri...

int *p=a是什么意思?谢谢
这是C语言里的一段代码,其中p是一个整数int类型的指针,a应该是一个整数,然后把整数a的值赋值给指针p。指针p的地址是另外一个整数,指针的地址和里面存放的数值是两个不同的概念哦,好好学习C语言吧!

c语言int *p=a解释
你的理解是对的.我帮你分析一下:int a[i]的i需要已知,要不,是错的.int *p=a是定义指针变量p,并把数组a[i]的开始地址a赋值给p. 因为a代表数组的开始地址,所以把它理解成int *p p=a;是没有问题的.但是,如果是 int a;int *p=a则这个表示把a的值当作地址赋值给p,没有实际意义....

c语言中int*p=a与int*p=&a有什么区别???求大侠帮忙!!!
区别很大。第一个int *p = a;这是把a给一个指针,一般a是指针或数组,否则可能会造成很大错误。int *p = &a;这是把a的地址给p,一般a可以是一个整型变量。

C语言 int a,*p;*p=a;这个语句对吗?
int a= 3,*p;p=&a; \/\/a是已经分配了内存的一个int变量,对它进行取地址&运算,在给指针p进行初始化,小的地方就能够看出一个人的基本功了,楼主要努力哦 送给楼主一句话了:二进制的世界,才是程序真正的世界 努力做个 二进制的程序员吧,呵呵,不要太依赖于 编译器哦 记者给分哦 ...

C语言中,p=&a 那么*p与a的区别是什么?
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。p按照...

c语言里:char a[5],*p=a,这里a是一个字符,还是首地址,为什么?
首地址,指针只能存地址,a是数组a[5]的数组名,即数组的首地址

c语言:char*a;char*p=a;什么意思?
char *a是定义一个char型指针变量a,后面紧接着char *p=a,是定义一个char型指针变量p,并且p和a指向同一个位置。指针里好像有一个说法是什么:定义、关联、引用,三者有顺序

平凉市13082947177: 关于C语言,*p=a[0]是什么意思呀? -
甫伯森克: c语言中*p=a是指针变量赋值语句,这种写法有两种可能意思:1.指针变量定义时的初始化赋值int a[10];int *p=a ; //这时的a是个地址,如:数组名或指针变量,表示定义指针变量p,同时,p指向地址a. 这里的*是跟随int的,用来表示p变量是int...

平凉市13082947177: C语言中定义的变量前加**是什么意思 -
甫伯森克: 参考答案:我是这样认为的:*是指针运算符.我们曾可以这样去定义:int a[10],*p,**s; 如果在下面的语句中出现了*p=a; 这就意味着指针p已经指向数组的首地址,也就是a[0], 此时我们可认为指针p是一级指针. 如果在下面的语句中出现了*s=p, 这就意味着指针s指向了p的单元,而p指向了a[0] 此时s离数组的首地址形象的像隔了2级 因此称s为2级指针. 对于2级指针,有**s=*(*s)=*p=&a[0]

平凉市13082947177: C语言中*p=a[0]与*p=&a[0]有什么区别? -
甫伯森克: *p=a[0],令p所指向地址的内容等于a[0],p是一个一级指针;*p=&a[0],令p所指向地址的内容等于a[0]的地址,p是一个二级指针.

平凉市13082947177: C++中已知数组a[10],则a,a[0],*p=a各是什么意思 -
甫伯森克: 【答案】 a代表数组名,是一个指针,指向数组中第一个元素(即a[0])的首地址.a[0],数组a中的第一个元素.*p=a,应该是int *p=a吧?表示把指针a赋值给指针p,即p也是指向数组中第一个元素(即a[0])的首地址.有不明白的再问哦~ 望采纳~ o(∩_∩)o

平凉市13082947177: c语言中p=a[0],*(p+4*i+j)是什么意思 -
甫伯森克: a是怎么定义的?如果a[0]是指针的话,*(p+4*i+j)就是指针寻址啊.

平凉市13082947177: 谁能详细清楚地帮我解释一下*p=&a[0]的意思含义啊,谢谢了!! -
甫伯森克: 首先你这里*p是在初始化呢还是在赋值呢?如果是 int *p=&a[0];这样的话.那么意思就是说,将数组a的第一个元素的地址交给p这个指针保存 如果是 *p在被赋值,那么前提是你的p必须已经指向了一块内存比如如下:int i; int *p=&i; 如果是这样....

平凉市13082947177: C语言中定义int *p;p指向a[0]; 这个表达式是什么意思 *p++; 与*(p++)一样吗? -
甫伯森克: *p++和*(p++)是一样的 *p++逻辑上等价于*p; p+=1;*(p++)逻辑上等价于 *(p); p+=1;

平凉市13082947177: C语言中 int *p=a[0] 这样表达对不对 -
甫伯森克: 这个表达式没有语法错误,但是我估计不能达到你想要的结果,不知道你要表达什么.给你分析下这个表达式的含义,这里a[0]应该表示一个地址,把这个地址赋给p,然后*p表示a[0]地址所指向的内容.我估计你的a是一个一维数组,你可能是想让指针p指向a[0]这个元素,如果是这样,则表达式应该改为int *p = &a[0].但是如果a是一个二维数组,则这个表达式有意义,没有任何问题!

平凉市13082947177: 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. 诸如此类.

平凉市13082947177: c语言int a[ ]=(1,2,3,4,5,6) *P=a,什么意思,*P=1? -
甫伯森克: *P=a 把数组a的首地址赋值给指针p,a数组的首个元素 a [0]的地址就是数组a的首地址,所以p指向的是a [0],那么对P解引用也就得到了a[0]的值就是1

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网