社区
C语言
帖子详情
关于指针问题,求助!
2608
2003-01-31 09:22:02
我定义了一个函数,其功能是修改指针所指向的内容,应该是用指向指针的指针作为参数(既指针的地址),但是在程序开始定义指针的时候,编译器并没有给指针分配内存空间,所以也谈不上指针的地址,我的解决方法是将它初始化为NULL,虽然可以运行,但是我不知道这样做是否正确,往能给予指点
另顺祝 各位新年快乐!!
...全文
24
11
打赏
收藏
关于指针问题,求助!
我定义了一个函数,其功能是修改指针所指向的内容,应该是用指向指针的指针作为参数(既指针的地址),但是在程序开始定义指针的时候,编译器并没有给指针分配内存空间,所以也谈不上指针的地址,我的解决方法是将它初始化为NULL,虽然可以运行,但是我不知道这样做是否正确,往能给予指点 另顺祝 各位新年快乐!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qhgary
2003-02-01
打赏
举报
回复
说的是对的。那么你在改变指针的值的时候,肯定要分配空间的罗。可是这样并不好。最好带进去的参数是已经分配好空间的。否则难管理
luckyum
2003-01-31
打赏
举报
回复
http://www.csdn.net/develop/read_article.asp?id=16704
小笨和漂向北方
2003-01-31
打赏
举报
回复
忘了using namespace std;
不好意思,又笨了:)
小笨和漂向北方
2003-01-31
打赏
举报
回复
没有引用的引用:)
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
打赏
举报
回复
?
没看懂。
如果是修改一个指针所指向的内容,那只要把这个指针传递给函数就可以了。
对网友
求助
问题
的几个回帖展示之四十三
师傅们,帮我分析下怎么理解
指针
的含义,为什么第一步的AC1的值是134217928,第二步的*AC1的值3106(vw200),为什么我在状态表里吧VB200写了个12的值而程序里&vb200的值是16#080000C8呢?
http错误码500 空
指针
报错。
求助
!!!
求助
!!! 运行一个登录重定向小案例,出现http错误码500 空
指针
异常错误,这里求教。 这里我原理吧文件夹名为登录的改为英文login,就可以运行了,不知道为什么? 项目结构 1、前端页面代码 登录页面,login.jsp...
C语言结构体中的
指针
成员如何作为左值赋值?
求助
!!!
有如下c代码(见图片下面),在VS2022中调试出现以下
问题
,array_at函数返回的是int*类型,为啥将其解引用后作为左值进行赋值在调试过程中出现写访问权限异常(见下图第11行),原因是什么?在中国MOOC上看的翁凯的...
GraphicsScene放在QGraphicsPixmapItem之后定义,报
指针
错误!!
这个
问题
必须记下来
求助
! 常见的一个
指针
错误The inferior stopped because it received a signal from the operating system. 足足查找了一整天,濒临崩溃时,总算挖出来了,但是不解原因。 我一个大项目被我...
mysql行转列列转行在线
求助
!!!!!!!!!!
mysql 行转列、列转行
求助
!!!!! 现在需求是将表t1转化为表t2,要求仅查询一次t1表。 附1是表ddl语句,附2是使用union all写的SQL,由于多次查询表t1,所以当t1中指标很多(例如h_score、w_score、x_score.......
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章