一个关于静态指针和动态指针的问题

bsautoland 2003-04-12 11:01:39
现在总是弄不清出什么是动态的指针,什么是静态的指针。
请大家说清楚点好么?
谢谢了
...全文
734 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishyqd 2003-04-14
  • 打赏
  • 举报
回复
同意 guoguoleige(难得糊涂)
jinsixiong 2003-04-14
  • 打赏
  • 举报
回复
char *p="1bisdfo"实际上是const char *p = "1bisdfo",是不能动的
liushmh 2003-04-14
  • 打赏
  • 举报
回复
int* const p;//静态
int* p;//动态
  • 打赏
  • 举报
回复
静态指针是在程序运行前就确定下来是指向固定内容的指针。在程序中不允许改变指针的指向~~~比如说int a=3;int *p=&a,*q;试图将p=q或p++等都是错误的
动态指针是在程序运行中可以不断改变的指针~~如在栈中的栈顶指针随着元素的增加或减少而不断变化~~~
maurice1983 2003-04-13
  • 打赏
  • 举报
回复
我给你一个最好的一个解释,绝对是最好的!
所谓动态的指针是可以动的指针,而静态是不能动的指针!
vosbtis 2003-04-13
  • 打赏
  • 举报
回复
其实动态的指针和静态的指针指得是
该指针所指的是堆内存还是固定的内存块(alloc 及 free由系统管理)
如:
1. char* p1 = new char[10];
2. char* p2 = "abcde";
3. if(p1){
4. strcpy(p1,p2);
5. }
6. p2 = p1;
7. delete p2;
8. p2 = NULL;
9. p1 = NULL;

p1 所指的是堆内存(heap), 可以动态生成;
p2 在 语句 6前所指的是该程序的数据段里的一块,不可控制,由系统管理.
在执行了语句 6之后, p2 也指向了堆内存(heap).
执行了语句 7 后, p1, p2 所指的堆内存(heap)已被释放掉,不能再对它进行操作.
p1,p2 变量的内存本身是栈内存 (stack),在进入该函数时生成,退出函数时释放.


li3807 2003-04-13
  • 打赏
  • 举报
回复
在类中:
class A
{
public:
A(){}
protected:
static int *p;
};
这个就是静态指针,它在类中是公用的指针.
bsautoland 2003-04-13
  • 打赏
  • 举报
回复
我想知道,那些事可以动得指针,那些事不可以懂得指针。
如,char *p="1bisdfo";
p就是一个静态的指针。我想知道这样的
谢谢大家乐
  • 打赏
  • 举报
回复
你是指指向堆中的指针 和 指向栈中以及常量的指针吗?
bsautoland 2003-04-12
  • 打赏
  • 举报
回复
c中的

69,378

社区成员

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

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