社区
C++ 语言
帖子详情
(晨星)、(天上的肥鸭不怕C++,就怕开水烫)两位大哥,为什么你们能对c++底层能这么了解呢?
cowboy2006
2003-07-10 11:17:34
???
你们学c++有多长时间了?
工作了吗?工作了有多长时间了?
...全文
132
55
打赏
收藏
(晨星)、(天上的肥鸭不怕C++,就怕开水烫)两位大哥,为什么你们能对c++底层能这么了解呢?
??? 你们学c++有多长时间了? 工作了吗?工作了有多长时间了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
55 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iNothing
2003-08-12
打赏
举报
回复
kao,玩BT啊?
#include <stdio.h>
char *GetMemory(void)
{
char *p;
_asm
{
jmp addr1
addr:
_emit 'H'
_emit 'e'
_emit 'l'
_emit 'l'
_emit 'o'
_emit ' '
_emit 'w'
_emit 'o'
_emit 'r'
_emit 'l'
_emit 'd'
_emit '!'
_emit 0x0a
_emit 0x0
addr1:
mov eax, offset addr
mov p, eax
}
return p;
}
void main(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
//putchar('\n');
}
Congy
2003-07-17
打赏
举报
回复
void foo(char const ** const p)
{
const char q[] = "world, hello!\n";
*p = q;
};
int __cdecl main()
{
char const * const p = "hello, world!\n";
char const ** const pp = (char const ** const)&p;
foo(pp);
printf("%s", *pp);
return 0;
}
大家猜,这个的结果又怎样??
bluedodo
2003-07-12
打赏
举报
回复
跟一跟,起床接着看
frankMasson
2003-07-11
打赏
举报
回复
先前看到一个另类版的 hello world,顺道贴过来.
cow 先不要编译,考虑一下它的结果.
#include<stdio.h>
void foo(char ** p)
{
*p = "world, hello!\n";
}
int __cdecl main()
{
char *p = "hello, cow \n";
foo(&p);
printf("%s", p);
return 0;
}
晨星
2003-07-11
打赏
举报
回复
哦,目前还是学生,只是在做兼职。
业余喜欢听大戏,:)。最喜欢的演员:于魁智、邓沐玮。
leeseon
2003-07-11
打赏
举报
回复
楼上的------经典经典
拍马屁的--------不是不是
晨星
2003-07-11
打赏
举报
回复
呵呵,兄弟对C++的底层知之甚少,只是近来到CSDN上泡的时间比较多,所以给楼主造成了这种错觉。
这两年,在C++上的确有所提高,主要靠CSDN上网友的帮助。
大家互相学习吧。
oldgameman
2003-07-11
打赏
举报
回复
呵呵...
虚心学习请教的---可以可以.
拍马屁的---不要不要.
<<C++ PRIMER>>---要得要得.
<<THE C++ PROGRAMMING LANGUAGE>>,<<C++标准库>>,<<编译原理>>,<<线代>>,<<离散>>,<<数据结构>>,<<操作系统>>,<<计算机体系结构>>....---更高更高.
4分理论6分实践---王道王道.
xclovejjforever
2003-07-11
打赏
举报
回复
#include <stdio.h>
void foo(char **s)
{
printf("s address is :%xd\n *s address is :%d\n &s address is :%xd\n", s, *s, &s);
*s="Hello!";
printf("s address is :%xd\n *s address is :%d\n &s address is :%xd\n", s, *s, &s);
}
int main(void)
{
char *p="World";
printf("%xd\n",&p);
foo(&p);
printf("%s", p);
printf("%xd\n", &p);
return 0;
}
如果这样的话,因该就是一目了然了吧!~
结果里面只有一个地址的变化!~
frankMasson
2003-07-11
打赏
举报
回复
你看就不要大哥前大哥后的了,我比你大不了多少,简单点叫肥鸭吧.
我的工作主要是搞 DirectX 方面的东西.对 C++ 的底层了解实在不敢说.当年在学校时很多东西都还没整明白,自己稀里糊涂地就拿了毕业证,其实许多的知识是在工作中恶补的.虽然工作有两年多了,慢慢地才发现,以前大学里的一些书不知从何时开始,又出现在了自己的工作台前.这里面有线性代数,有汇编,有编译原理,有数据结构,当然,也有一本<<c++ primer>>.
我想吧,有一些东西,在一开始的时候就能正确地了解它的本质,虽然困难,虽然可能会由这次次的失败而感到痛苦.但有一天,你看到你的同事为自己写的一段程序反复调试而抓狂的时候,你会知道你以前的付出绝对是有价值的.
其实,有很多我们看起来并不起眼的东西,里边都有意想不到的宝贵经验.
举个例子, 像 cout 这一个十分简单明了的小东西,楼主可曾看过它实现的代码?还有标准C/C++的标准库函数,能否自己试着实现几个? 然后看看自己的方法和库提供的有何不同,孰优孰劣? 看一看编译器在编译这些个东西的时候,都干了一些什么,把一些小例子,在汇编下调试一下,跟一跟,不需要太多的时间(相对而言), cow 兄成大师矣.
ps.业余我喜欢弹古典吉它,说我对c++底层很了解,我实在受不起,但说我对古典吉它很有研究,那是当仁不让的.
beistone
2003-07-11
打赏
举报
回复
up
penter
2003-07-11
打赏
举报
回复
mark;
idontlikenickname
2003-07-11
打赏
举报
回复
还是这个坛子气氛好~
有这么多可以相互切磋的朋友,又有这么负责任的斑竹.
en~~心情愉快~~~
cowboy2006
2003-07-11
打赏
举报
回复
#include<stdio.h>
void foo(char ** q)
{
*q = "world, hello!\n";
}
int __cdecl main()
{
char *p = "hello, cow \n";
foo(&p);
printf("%s", p);
return 0;
}
好象想通了:
q=&p(函数参数传递时)
*q="world, hello!\n"; => p="world, hello!\n";
所以是"world, hello!\n";
darcymei
2003-07-11
打赏
举报
回复
问个问题:像这样的常量字符串是不是像汇编的伪指令一样,在生成exe是直接加载在内存的数据段里?
frankMasson
2003-07-11
打赏
举报
回复
to cow:
我QQ基本不用,现在只有 msn
frankmasson2003@hotmail.com
Flamesong
2003-07-11
打赏
举报
回复
看不出楼上的例子有何高深,望各位指教。
snipersu
2003-07-11
打赏
举报
回复
常量的问题,指针的指针的问题。
^v^
晨星
2003-07-11
打赏
举报
回复
真的有那么麻烦吗?
我觉得这个程序在理解上无非就是两点需要注意:
(1)通过用二级指针做函数参数可以在函数内通过形参来修改二级指针的内容,即一级指针。此程序中就使二级指针指向的一级指针重新指向了新的字符串。
(2)字符串常量保存在静态存储区中,所以函数返回后,它依然存在,可以被打印。不像一般的局部变量,如果函数退出后还引用,会很危险。
frankzch
2003-07-11
打赏
举报
回复
to 小欧:
char *p="hello cow\n"等价于 char *p;p="hello cow\n";是对指针p的初始化,由于指针p是指针变量,所以他可以任意改变指向(能不能改变内容决定于指针本身,常量指针才不能改变内容)
例程很清晰,没有任何问题,主要是考虑一个“指向指针的指针”问题
程序先进入main里面,p1是一个指针,令q=&p1,q的内容(*q)为p1的地址;
接着在foo里面,p2是一个指向指针的指针,不妨令指针r=*p2,因为把&p1传递给**p2,所以r的内容(*r=**p2)就是p1的地址(&p1),所以r=q,并且r和q是共用一块存储区域,修改r就修改了q,所以结果肯定是“world,hello!\n";
加载更多回复(35)
wp处理溢出的文本案例
多了一个Rich在前面就不得了,Rich原义为丰富的意思,所以该控件既能显示较长的文本,而且还能支持更多的文档格式。在RichTextBlock中,能过Blocks集合来设置内容,而Block类是抽象的,不能直接用,然它只有一个子类...
语言宝盒下载
说明 返回指定宠物在宠物栏中的位置 宠物名称为空则返回最后一个宠物的名称 返回 字符串 示例 ?pos = 宠物位置("功夫驴") ?pos=0 |?name = 宠物位置("") ?name="功夫驴" 函数 回城买卖() 说明 根据设置执行回城...
【醒悟】揭露炸鸡
鸭
背后的真相:一位良心发现者的自白
如果你们觉得对亲朋好友有真实的利益,敬请广为告知,使我们不要一而再、再而三地陷入色香味的迷津之中,永无休止无法自拔…… 前几年有一次吃肉,不知为什么反胃,吐得很厉害,之后就一直也...
[网摘]炸鸡
鸭
背后的真相 — 一位良心发现者的自白
转摘自:http://msn.myspace.cn/t/3518170.html (原文未标明作者)学习传统文化一年多了,今年四月,偶然回家乡一趟,闻到满大街油炸食品的香味,想起两...如果你们觉得对亲朋好友有真实的利益,敬请广为告知,使我们不
爱情八十三课,填
鸭
式的爱
小筝养了一只“
肥
鸭
”——她的男朋友。 从他们确定关系起,小筝就竭尽自己所有的努力来爱男友。 早上6点半闹钟响起,小筝起床,温柔的亲吻了一下还在酣睡的男友的额头,然后下床开始为他准备好早餐——面包里...
C++ 语言
64,680
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章