一个小白疑问(指针)

s8232642 2010-06-12 09:48:17
一直对指针概念很模糊。
我看到书上说,在使用指针要给其一个动态空间,也就是用了malloc(new)后,然后free(delete)。
那么说,如果我是声明了一个“局部指针变量”,也需要malloc和free吗?

比如我看到strtok的例子

#include <stdio.h>
#include <string.h>
int main()
{
char s[256]= "WOA(3).WOB(2).CWO(5).";
char *str;
str = strtok( s, "." );
while (str){
printf( "%s\n", str );
str = strtok(NULL,".");
}
return 0;
}


这里面,char *str,就不用malloc,那我在我的某个比较大的程序里的一个局部函数里面,想使用下strtok,是不是也可以声明一个 char *str,不用malloc这样子用。
谢谢
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-06-12
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
wade_2003 2010-06-12
  • 打赏
  • 举报
回复
如果我是声明了一个“局部指针变量”,也需要malloc和free吗?

要啊,否则就是内存泄露撒~~~~~~
wangchentangjuan 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 aperson111 的回复:]
之所以str能有值,是因为在strtok函数中申请了空间,然后返回地址,从而str指向了这个地址。

所以直接用strtok没有问题。里面已经用动态申请了空间了的。
[/Quote]说的很好
向立天 2010-06-12
  • 打赏
  • 举报
回复
指针就像钥匙
空间就像房子
你可以用这把钥匙开一个120平的房子
也可以用它进一个60平的房子
但是钥匙就是钥匙
房子是房子
aperson111 2010-06-12
  • 打赏
  • 举报
回复
之所以str能有值,是因为在strtok函数中申请了空间,然后返回地址,从而str指向了这个地址。

所以直接用strtok没有问题。里面已经用动态申请了空间了的。
taodm 2010-06-12
  • 打赏
  • 举报
回复
自己有没有编译试一下?
“如果我是声明了一个“局部指针变量”,也需要malloc和free吗?”

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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