指针和数组指针有什么区别?

tfnadnt 2008-10-23 11:28:29
面试的时候,面试官说数组指针只是一个标号,不占有内存,也不能进行++,--运算。

对吗?

请高人详解
...全文
215 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenjunsu 2008-10-25
  • 打赏
  • 举报
回复
我看面试官说得错误连连啊!

up
chenzhp 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hjzwl1018 的回复:]
当数组名作为数组指针时,代表数组的首元素,它是一个指针常量,它的值在程序运行期间是固定不变的;假如int (*a)[5],这也是个数组指针,但是可以进行a++或a--运算,因为a是个指针,它指向包含5个元素的数组。你的意思应该不是说数组指针,应该是说数组名。
[/Quote]

如果就把数组名来当作数组的指针,肯定是不能够进行算术运算的。
  • 打赏
  • 举报
回复

数组指针 可以 ++ --
帅得不敢出门 2008-10-23
  • 打赏
  • 举报
回复
数组名相当于数组的首元素的地址,常量,所以不可修改
mifeixq 2008-10-23
  • 打赏
  • 举报
回复
不太明白面试官说的……

ex.

mifei@P-I-mi:~/C$ ./a.out
4
abcd,efghmifei@P-I-mi:~/C$ cat test.c
#include <stdio.h>
char (*ptr)[5];
int main(){
char a[2][5]={"abcd","efgh"};
printf("%d\n",sizeof(ptr));
ptr=a;
printf("%s",ptr);
ptr++;
printf(",%s",ptr);
return 0;
}
tianxiaogang12 2008-10-23
  • 打赏
  • 举报
回复
数组指针不占用内存是对的 不能进行++,--运算不一定 不常量就可以++ --
lann64 2008-10-23
  • 打赏
  • 举报
回复
首先“数组指针”就是个不知所云的东西。是把数组名当指针看待,还是一个放置指针的数组?或者是一个指向数组的指针?不知道是说什么。
hjzwl1018 2008-10-23
  • 打赏
  • 举报
回复
当数组名作为数组指针时,代表数组的首元素,它是一个指针常量,它的值在程序运行期间是固定不变的;假如int (*a)[5],这也是个数组指针,但是可以进行a++或a--运算,因为a是个指针,它指向包含5个元素的数组。你的意思应该不是说数组指针,应该是说数组名。
lbh2001 2008-10-23
  • 打赏
  • 举报
回复
数组名只是数组头元素地址的别名,而且是常量性质的,是不占用内存空间的
Soulic 2008-10-23
  • 打赏
  • 举报
回复
如果使用数组名作为数组指针,确实是不能进行++,--运算
hackxq 2008-10-23
  • 打赏
  • 举报
回复
楼主说的数组指针不能++或——可能不是ANIS C约束条件中的“不能”。
当然可以++或--,只不过对于一个指向一维数组的指针而言,对其进行++或--操作,会使其指向未知内存区域。
楼主说的“可能”可能是这个层面的“不能”
至于说不占内存的说法,不知从何而来
Big鹏 2008-10-23
  • 打赏
  • 举报
回复
数组指针只是一个标号,不占有内存,也不能进行++,--运算。


数组指针;是指向数组的指针,是一个指针,其指向的类型是数组;
说其不占内存,那占的4字节是什么??

说不能进行++ --运算,char (*c)[3]; 指针为一变量,为什么不能??


70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧