关于指针问题,求助!

2608 2003-01-31 09:22:02

我定义了一个函数,其功能是修改指针所指向的内容,应该是用指向指针的指针作为参数(既指针的地址),但是在程序开始定义指针的时候,编译器并没有给指针分配内存空间,所以也谈不上指针的地址,我的解决方法是将它初始化为NULL,虽然可以运行,但是我不知道这样做是否正确,往能给予指点


另顺祝 各位新年快乐!!
...全文
24 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qhgary 2003-02-01
  • 打赏
  • 举报
回复
说的是对的。那么你在改变指针的值的时候,肯定要分配空间的罗。可是这样并不好。最好带进去的参数是已经分配好空间的。否则难管理
luckyum 2003-01-31
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/read_article.asp?id=16704
  • 打赏
  • 举报
回复
忘了using namespace std;
不好意思,又笨了:)
  • 打赏
  • 举报
回复
没有引用的引用:)
c++中是提倡在这种情况下用引用代替指针的。另外在c++中是可以直接给指针赋零值的,使用NULL是c中的#define NULL (void*)0做法,c++中由于其强类型检查,变为#define NULL 0,提倡的事例代码:
#include <iostream>
void increptr(int* &i){
i++;
}
void main(){
int* i=0; //空指针
cout<<"i="<<i<<endl;
increptr(i); //看到只传递指针i即可
cout<<"i="<<i<<endl; //你会看到指针本身增加了,而不是它指向的内容:
}
widewave 2003-01-31
  • 打赏
  • 举报
回复
可以用指针的引用啊。引用可以保证被引用的指针已分配内存。不过指针指向的对象是否分配内存只能靠你自己了。
能不能用引用的引用?
doer_ljy 2003-01-31
  • 打赏
  • 举报
回复
是这样的,在拟定一了一个指针类型的时候。编译器分配一块空间,存放指针的内容(不是指针指向的内容)。简单点说,假设地址空间0x1000-0x2000可用!你的指镇定一了以后指向不定的空间,或者未NULL。但是它本身的的内存空间是被分配了的!比如说:0x1000 占2个字节。当你指向了一个字符数组(假设开始地址是0x1a00)那么,你的指针里存的就是0x1a00,也就是说0x1000和0x1001里存的是0x1a00。就这么回事!
BTW:你的做法是对的!
rtdb 2003-01-31
  • 打赏
  • 举报
回复
正确。

不过这种设计不提倡。
因为内存在函数中分配, 在哪里FREE呢? 难管理。
再就是被初始化成NULL的指针用前要检查。

其它WINDOWS中的句柄和STL中iterator是类似的概念,
不过它们都不直接使用指针。
sea_lover 2003-01-31
  • 打赏
  • 举报
回复
不能象你说的那样改!
int *aa(int &v)
{
int *temp;
temp=v;
temp=……;
return temp;
}





----------------------------------------
新年快乐啊! ☆ ◢ ◢ ◢ ███
█☆█☆█ ◢ ◢█☆██ ◢ ◤
◥ ◤ ◢ ◢ █ ◢ ◤
☆☆☆☆☆████ █████ ████☆☆☆☆
◢█◣ █ █ █ █ ◥ ◤ █
◢ █ ◣█ █ ███████ ◥◤ █
█ █ █ █
2608 2003-01-31
  • 打赏
  • 举报
回复
怨我我没有说清楚 :)

比如说,如果要在函数中修改变量的值,必须要把指向这个变量的指针传递给函数
就象是aa(int *)这样.

那么如果这个变量是一个指针呢(也就是在函数中修改指针所指向的地址),是不是
也要把指向指针的指针传递给函数(这样就修改了指针的内容)比如aa(int **),但是据我所知编译器在编译时候,并不给指针非配内存,那么怎么谈的上指针的地址呢我的解决方法是将它初始化为NULL,虽然可以运行,但是我不知道这样做是否正确,往能给予指点

blh 2003-01-31
  • 打赏
  • 举报
回复
不太明白你的意思,hehe
是不是下面的意思?
void modptr(char* ptr)
{
ptr[0] = 'a';
ptr[1] = 'b';
}

int main()
{
char a[5];
modptr(a);
return 0;
}
idler 2003-01-31
  • 打赏
  • 举报
回复

没看懂。
如果是修改一个指针所指向的内容,那只要把这个指针传递给函数就可以了。

69,382

社区成员

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

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