#include<stdio.h>
#include<conio.h>
void main()
{
int *(intArray+3);
int i;
int (intArray+3)=&i;
*(intArray+3)=11;
printf("%d%d",i,*(intArray+3));
getch();
在这个程序中我用了概念*(intArray + 3)= intArray [3] 与基础程序
int *p;
int i;
p=&i;
*p=11;
printf("%d%d",i,*p);
在这种情况下,o / p是11,11,但第一个程序是基于这个概念plez帮助吗?
答案 0 :(得分:2)
只有在定义和初始化指针后才能进行指针运算。现在让我解释一下:
假设有一个包含5个元素的数组intArray
;
int intArray[5];
我们假设intArray
的起始地址是2000
。现在(intArray + 3)
在这里意味着什么?这意味着(intArray + 3)
现在引用数组intArray
的第四个元素(元素3),即现在它指向位置2012
(因为数组名称可以用作假设int
类型在机器上占用4
个字节,则指向其第一个元素的指针。当您在其前面放置*
运算符时,它会取消引用该位置的值,即*(intArray + 3)
将为您提供存储在2012
位置的值,该值等于{{1} }。
由于您既未将intArray[3]
声明为指针(指针必须初始化),也不作为数组,因此不能取消引用intArray
。这是无效的,程序将无法编译。