c语言数组int a,p=a是什么意思

作者&投稿:石支 (若有异议请与网页底部的电邮联系)
C语言中(++p) - >a是什么意思,和(p++)->a的区别在哪里~

这涉及到两个知识点:指针和自加运算符作为前缀和后缀运算符的区别。

为了具体分析,简单的写如下程序:

#include

//自定一个结构体。指向结构体中的变量是指针用的最多的场合,有典型意义
struct node
{int a;};

main()
{
//结构体数组 array
struct node array[4]={{0},{1},{2},{3}};
//结构体指针 p
struct node *p=array;

printf("%d
",(++p) ->a);
printf("%d
",(p++)->a);
}

运行结果为:
1
1

运行结构分析:
指针初始时指针结构体数组 array的第0个元素 ,即 p->a=array[0].a=0

语句(++p) ->a ,由于是自加运算作为前缀,要在【执行这条语句时】 p先加一, 即指针p指向了 array的第1个元素array[1],输出结构为1.【执行完这条语句 】p 指向了array[1]。

语句(p++)->a,由于是自加运算符作为后缀,【执行语句时】指针本身不加一,依然指向 array的第1个元素array[1],],(p++)->a=array[1].a=1。.【执行完这条语句 】 p 才加一,指向 arry的第2个元素array[2].

总结:
自加运算符作为前缀运算符,执行所在语句时变量就已经加一。
自加运算符作为后缀运算符,执行完所在语句时变量才加一。

int在C语言中是整型变量的定义,int i就是定义一个整数变量i,在接下来的使用中i都是整数,比如你可以i=1或者其他整数,如果你让i=1.1,那么系统会报错或者自动转为i=1;a[8]是数组,int a[8]就是定义一个最多储存8个整数的数组,数组下标从0到7,当然不一定存满,但最多存储8个整数。例如下图:

int a 表示定义了一个变量 a
int p = a 表示定义了一个变量p并给其赋初始值为a
因此int a,p=a的意思是定义一个变量a,由定义了一个变量p,并给p赋初始值为a
并不是数组
C语言中定义数组的方式为:类型 变量名[常量] 如: int arry[10];定义了一个整形数组arry共十个元素,分别为0----9

你是想说 int a[ ] , *p=a 吧?


秀洲区15819462686: c语言数组int a,p=a是什么意思 -
慈炉丙氨: int a 表示定义了一个变量 a int p = a 表示定义了一个变量p并给其赋初始值为a 因此int a,p=a的意思是定义一个变量a,由定义了一个变量p,并给p赋初始值为a 并不是数组 C语言中定义数组的方式为:类型 变量名[常量] 如: int arry[10];定义了一个整形数组arry共十个元素,分别为0----9

秀洲区15819462686: 在C语言中, int *p; int a = 100; p = &a;//这句语句的意思是什么 -
慈炉丙氨: int a 表示定义了一个变量 a int p = a 表示定义了一个变量p并给其赋初始值为a 因此int a,p=a的意思是定义一个变量a,由定义了一个变量p,并给p赋初始值为a 并不是数组 c语言中定义数组的方式为:类型 变量名[常量] 如: int arry[10];定义了一个整形数组arry共十个元素,分别为0----9

秀洲区15819462686: 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

秀洲区15819462686: 求解释:int a; int **p=a; -
慈炉丙氨: 楼主这个语句会编译出错的.*代表后面表达式的值为地址的内容,相对的,&表示取后面表达式作为的地址.所以定义了一个int **类型的变量,指的是一个指向整形数据的指针的指针,也就是说是一个 指针 -> 指针 -> 一个整形数 所以你的编译...

秀洲区15819462686: 假如有二维数组定义为int a[3][4];且有p=a;则p+1表示的是什么? -
慈炉丙氨: 在c语言中,数组名是数组首个元素的地址,即: a=a[0].p=a,即p=a[0];所以:p+1=a[0]+1=a[1];

秀洲区15819462686: c++中int a=1; &p=a;是什么意思? -
慈炉丙氨: 声明一个整型变量a并初始化为1,然后声明一个引用指向a.对引用p所做的一切更改等同于对a所做的更改.注意中间的分号;应该写成逗号,否则会报错.

秀洲区15819462686: c语言指针的问题求帮助 int a; p=&a;什么意思啊
慈炉丙氨: 意思是定义了一个整型变量,名字为a,然后把变量a的地址,赋值给指针p. p是一个指针,类型为整型.执行完之后,指针p就指向了整型变量a.

秀洲区15819462686: C语言 int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a *p=a 什么意思??是不是相当于 *(p=a) ??? -
慈炉丙氨: int a[ ]={0,1,2,3,4,5,6,7,8,9}:意思是a数组为包含{0,1,2,3,4,5,6,7,8,9}的整数数组, int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a:p是等效于a的整数指针,你应该这样读int *p =a;(*号跟着变量走)定义了一个指针等于a数组首地址.

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

秀洲区15819462686: 有*a[3]和**p;那么p=a是什么意思 -
慈炉丙氨: int *a[3]; int **p=a; a是一个数组,数组中的元素是指针,a就相当于一个二维的指针 p是二维指针 p=a;就是把a的值赋值给p,p[0]就相当于a[0]

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