请教C语言高手为小弟解答的疑惑

2026-05-19 07:10:33
推荐回答(6个)
回答1:

1,int* pN=&N;

pN是一个指针,这个指针指向N,指针的值是存放数据N的内存的首地址;

2,int* pN=N;
pN也是一个指针,指针的值是就是N;

这种用法是不合适的,因为你一般不知道这个指针指向的内存内容是什么。如果真要用的话,可以写成这样:int* pN=(int*)N。

3,int* pIndex=nArray;
这种写法很正常,表示pIndex指向nArray所指的那个数组首地址。

4,int* pIndex=&nArray;
如果这么写的话,逻辑上是错的,&nArray表示一个二级指针,而pIndex是一个一级指针。

回答2:

&N 是 N的地址
int* pN=&N 中 pN是 N的指针的指针
int* pN=N 中 pN是N的指针

int* pIndex=&nArray
可以这样写,不过,nArray本身就是一个指针
这样就成了指向 这个指针的地址
nArray[n] 才是里面的数字
表示以 int指针的方式 向后跳n个int长度
nArray[n] 是 *(nArray+n) 的另一种写法而已

回答3:

int* pN 表示一个指针,int* pN=&N 中,pN指向N的地址,或者说,pN 这个值等于N的地址值。int* pN=N 中,pN 这个值等于N的值。

nArray为数组的话,两种写法没有区别。

回答4:

怎么给你解释呢,打个比喻吧,有五个空箱子,每个箱子上面都有一个标签,顺序从1到5,目前指针指的是2这个箱子,&3的意思是你这个指针指的是地址是内存中3(当然此处应用二进制表示,我这是为了好懂,)的地方,即指的是3这个箱子,而3则代表指针向上移三位,即此时指的是5这个箱子, 希望对你有帮助

回答5:

int* pN=&N合法,定义PN为指向N元素所在的地址,后面的程序中,PN将返回N的地址值,*PN则返回N的数值,而用int* pN=N定义PN则是非法的,因为PN是指针,而N是整型变量。记住一点加了&表示取地址就行了。
int* pIndex=nArray和int* pIndex=&nArray两者拿来定义都是可行的,因为数组名本身就是整个数组的首地址,用上述定义的话,指针pIndex将指向数组的首元素地址。

回答6:

这么多正解。。。我就不多言了。