我是个应届生,请各位大神指点指点啊

kineting 2010-12-08 10:30:45
周六要去面试了,公司是做linux c开发的。
我c语言学校交的基本语法,而深入的是自学的,应为项目看了unix高级环境中部分项目需要的部分知识。
大部分知识都是要用的时候goolge出来,基本能应用。
周六的面试很没底气啊,各位提点建议啊
...全文
186 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eye_119_eye 的回复:]
很好的 昨晚在 ubuntu下 装eclipse 的cdt 插件没搞好。你用什么编译器 g++
[/Quote]
我一般是vi+gcc。。。。。。
java用Myeclipse
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mdpmw 的回复:]
不管怎样 好好把握机会。就当是去公司参观下
[/Quote]
恩我给我老爹也说的这次不报希望当是去体验一下现场面试的感觉

[Quote=引用 2 楼 eye_119_eye 的回复:]
很好的 昨晚在 ubuntu下 装eclipse 的cdt 插件没搞好。你用什么编译器 g++
[/Quote]
编译器。。。。c语言当然是gcc,c++是g++,java需要装jdk当然是javac。。。。。。,
eye_119_eye 2010-12-08
  • 打赏
  • 举报
回复
很好的 昨晚在 ubuntu下 装eclipse 的cdt 插件没搞好。你用什么编译器 g++
mdpmw 2010-12-08
  • 打赏
  • 举报
回复
不管怎样 好好把握机会。就当是去公司参观下
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 hong_z_m 的回复:]

分配的是堆上的内存 这个动态分配的内存 只有在delete的时候 或者这个main函数由exit(0)退出之前那个同步过程由内核回收

函数调用在盏里面 和堆有什么关系

小伙子 其实真能看出你现在概念都混淆了 基础太差了 先别去面试了 好好地静下心来 修炼修炼内功把
[/Quote]

c的东西大一时学的。用c做项目做了一年,我做项目的时候又不会去转那些牛角尖,当然没注意细节这些问题了。。。。。。。。。。。。。。。。。。。。。,太过浮躁了。。。。。。。。。。
如果c都没眼了,其他方面那更没自信了,毕竟那c获得了学校的程序设计大赛一等奖,所以c还是有自信的
微笑明明 2010-12-08
  • 打赏
  • 举报
回复
分配的是堆上的内存 这个动态分配的内存 只有在delete的时候 或者这个main函数由exit(0)退出之前那个同步过程由内核回收

函数调用在盏里面 和堆有什么关系

小伙子 其实真能看出你现在概念都混淆了 基础太差了 先别去面试了 好好地静下心来 修炼修炼内功把
kineting 2010-12-08
  • 打赏
  • 举报
回复
改变p是改变不了str的。。。。。。。。。。。
kineting 2010-12-08
  • 打赏
  • 举报
回复
现在理解到了,
p代表,和n类似的
只是外部的数据复制。
而不是外部的地址
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 hong_z_m 的回复:]
其实这个就是一个简单的 深拷贝 浅拷贝的 问题

void getmemory(char* p,const int n)
{
p = new char[n];
}

这个函数 的参数 char* p 看上去是个浅拷贝
但是函数中操作的并不是P指向的内存 而是p本身
而这个参数相对于p本身来说其实是个深拷贝
这个p只是盏中为str生成的一个副本,并不是str本身的值从来就没有改……
[/Quote]
函数中申明的空间,他们的生命周期只在函数中啊,函数结束了,它也就玩完了。。。。。。。。。
微笑明明 2010-12-08
  • 打赏
  • 举报
回复
其实这个就是一个简单的 深拷贝 浅拷贝的 问题

void getmemory(char* p,const int n)
{
p = new char[n];
}

这个函数 的参数 char* p 看上去是个浅拷贝
但是函数中操作的并不是P指向的内存 而是p本身
而这个参数相对于p本身来说其实是个深拷贝
这个p只是盏中为str生成的一个副本,并不是str本身的值从来就没有改变过

如果写成这样那就对了
void getmemory(char** p,const int n)
{
*p = new char[n];
}

所以面试的时候像这样的简单问题如果都不会的话那肯定是通不过的
hdusunny44 2010-12-08
  • 打赏
  • 举报
回复
笔误。。。heap的特点是谁分配,谁释放
hdusunny44 2010-12-08
  • 打赏
  • 举报
回复
答案是对的,但是理解错了。
stack的特点是谁分配,谁释放。在程序退出前如果没主动释放,这段申请的空间还是在的,这里主要的问题是在函数返回时,不能把空间的首地址传回到主函数中。
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hong_z_m 的回复:]
从你以上的表现可以看出

1.什么都不会
2.但是自己却不知道
3.不谦虚
4.性格倔强,难以合作

你的解释大家一看就知道你什么都不会

因为这题实在太简单,所以我也不想做什么解释了
[/Quote]
经过测试无法分配空间。。。。。。。。。。。
微笑明明 2010-12-08
  • 打赏
  • 举报
回复
从你以上的表现可以看出

1.什么都不会
2.但是自己却不知道
3.不谦虚
4.性格倔强,难以合作

你的解释大家一看就知道你什么都不会

因为这题实在太简单,所以我也不想做什么解释了
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hong_z_m 的回复:]
CPP你就用g++ 后缀用.cpp
[/Quote]
哎。。。。。。。。。。我在说c,你把问题丢到c++上,
new 的内存空间属于在堆中,函数中的局部变量声明周期只局限于函数中,我的答案是那段空间在函数结束后就消失了,所以str没有空间,这当然我测试一下才能正确结果,理论上是没了
微笑明明 2010-12-08
  • 打赏
  • 举报
回复
CPP你就用g++ 后缀用.cpp
kineting 2010-12-08
  • 打赏
  • 举报
回复
c++当然会啊,在c编译器下不能那样些,c++当然可以那样写了啊
kineting 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hdusunny44 的回复:]
LZ你悲剧了。。。建议看看C和指针,C专家编程。

引用 10 楼 kineting 的回复:

引用 6 楼 hong_z_m 的回复:
C语言功底扎实就行啊

不知道你扎实不扎实

我来问你个简单的面试题

void getmemory(char* p,const int n)
{
p = new char[n];
}

int main (void)
{
……
[/Quote]
我才试验了,你的直接编译失败了不能用new,用p=(char *)malloc(n*sizeof(char))
微笑明明 2010-12-08
  • 打赏
  • 举报
回复
原来你不会C++啊

C其实根本没什么东西

那我重新写个你看看

void getmemory (char* p, const int n)
{
p = (char*)malloc(sizeof(char), n);
}

int main(void)
{
char* str = NULL;
getmemory(str, 10);
exit(0);
}
str能分配到动态内存么
hdusunny44 2010-12-08
  • 打赏
  • 举报
回复
LZ你悲剧了。。。建议看看C和指针,C专家编程。[Quote=引用 10 楼 kineting 的回复:]

引用 6 楼 hong_z_m 的回复:
C语言功底扎实就行啊

不知道你扎实不扎实

我来问你个简单的面试题

void getmemory(char* p,const int n)
{
p = new char[n];
}

int main (void)
{
char* str = NULL;
getmemory(str, 10);
}

str能分配到……
[/Quote]
加载更多回复(6)

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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