本文目录一览:
- 1、在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?
- 2、c语言中 int a. *pa; 是什么意思?
- 3、在c语言里为什么要这么写? int a[5],i,*pa; pa=a; 而不是这样写 pa=a[5
- 4、在C语言中,有如下的写法: int a = 5; int *pa; pa = &(a + 1);
在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?
在这行代码中int a[5],*pa=a; pa的值就是数组a的首地址, pa+=2就是向后移动两个元素的位置,pa+=2 和 pa = a +2是一样的,而不是a +4。a+4就是从数组的首地址开始移动4个偏移量,是错误的。
c语言中 int a. *pa; 是什么意思?
先纠正一下,a后面不是点,是逗号
定义一个整型变量a,以及一个指向整型量的指针pa
在c语言里为什么要这么写? int a[5],i,*pa; pa=a; 而不是这样写 pa=a[5
因为int a[5]的含义是内存帮你开辟一个能放5个int大小的空间,它的控件首地址为a
int *pa的含义是定义一个变量叫pa,它做了*运算之后,就是一个int,所以pa就是个指针,指针变量可以保存地址
综上,pa=a是把你开辟的那个空间的首地址赋予pa这个指针变量
这才合乎逻辑。
以上是依照原理解释。
下面加上一个无脑的解释,一般小时候老师都这么说:这就是语法,固定用法,记住就行!
在C语言中,有如下的写法: int a = 5; int *pa; pa = &(a + 1);
首先,你定义指针pa的时候最好先给它初始化,因为不初始化的话它可能指向一个很重要的区域,你这时候如果再赋值则可能改变这个重要区域的数据。至于pa=(a
+
1)这个是不对的,因为a+1的结果是一个数,它存放在内存的一个临时空间中,临时空间是会被释放的,你取临时空间的地址是不可取的。