社区
C语言
帖子详情
VC指针 有些东西不清楚了
xspace_time
2012-08-09 11:46:02
定义指针char *fp1,*fp2,*fp3; //看起来是定义了char类型 指针fp1 指针fp2 指针fp3
但对于char* fp1,fp2,fp3; //看起来是定义了char类型指针 fp1 fp2 fp3,那么fp2 fp3是否为指针
对于char *fp1,*fp2,*fp3;//编译器是从右往左读的 对于char类型 是使用堆栈分配地址的
fp1-8=fp2-4=fp3地址分配从右往左是由小到大的
那么VC分配地址是否分配的过程图和呢
...全文
238
12
打赏
收藏
VC指针 有些东西不清楚了
定义指针char *fp1,*fp2,*fp3; //看起来是定义了char类型 指针fp1 指针fp2 指针fp3 但对于char* fp1,fp2,fp3; //看起来是定义了char类型指针 fp1 fp2 fp3,那么fp2 fp3是否为指针 对于char *fp1,*fp2,*fp3;//编译器是从右往左读的 对于char类型 是使用堆栈分配地址的 fp1-8=fp2-4=fp3地址分配从右往左是由小到大的 那么VC分配地址是否分配的过程图和呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xspace_time
2012-08-11
打赏
举报
回复
是用VC6.0或者VC 2008编译
void main()
{
char* fp1,fp2,fp3;
}
如何得到像汇编代码一样简洁的反汇编代码呢
ForestDB
2012-08-10
打赏
举报
回复
定义指针char *fp1,*fp2,*fp3; //看起来是定义了char类型 指针fp1 指针fp2 指针fp3
// 正确
但对于char* fp1,fp2,fp3; //看起来是定义了char类型指针 fp1 fp2 fp3,那么fp2 fp3是否为指针
// fp2和fp3不是指针
对于char *fp1,*fp2,*fp3;//编译器是从右往左读的 对于char类型 是使用堆栈分配地址的
fp1-8=fp2-4=fp3地址分配从右往左是由小到大的
// 不太清楚LZ想表达什么,但是一般来说,栈是“倒”着的,即大地址在上,是栈底,然后在这个上下文,fp1最先进栈,地址最大,fp3后压栈,地址小。这个用debugger或者打印地址方式都可以看出来。
fzamygsd
2012-08-10
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
真 TM 服了 CSDN 了,第二个的帖子发了好多次没发出来。而提交了第三个帖子,提示成功后显示的却是第二个,这不知道啥时候第三个又莫名其妙的出来的………………………………
[/Quote]
yuqangy
2012-08-10
打赏
举报
回复
但对于char* fp1,fp2,fp3; //看起来是定义了char类型指针 fp1 fp2 fp3,那么fp2 fp3是否为指针
vc2008里fp2认为是char
windows好像都是从小到大分配内存地址的吧
「已注销」
2012-08-10
打赏
举报
回复
真 TM 服了 CSDN 了,第二个的帖子发了好多次没发出来。而提交了第三个帖子,提示成功后显示的却是第二个,这不知道啥时候第三个又莫名其妙的出来的………………………………
AnYidan
2012-08-10
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
char* fp1,fp2,fp3 操作符*只是修饰fp1,fp2和fp3都是char类型的。
fp1是占4个字节,fp2和fp3占1个字节。压栈的顺序应该是fp1,fp2,fp3吧。
[/Quote]
++
入栈的顺序是 compiler 的权力,c 规则中没有规定
「已注销」
2012-08-10
打赏
举报
回复
补充一下:
按照 C 风格的强制类型转换写法:
pstr = (char *)malloc(MAX_PATH);
极易认为 char * 也是一种数据类型。
char * fp1, fp2, fp3;
从而让人这么认为:因为 char * 是数据类型,即声明了三个指针。
这种想法是错误的。
我们先这样来生命一个新名称 PCHAR:
typedef char *PCHAR;
此时 PCHAR 和 char 身份一样了,都是数据类型。
PCHAR fp1, fp2, fp3;
由于 PCHAR 是数据类型,fp1, fp2, fp3 类型就与 PCHAR 等同,即指向 char 的指针。
从 typedef 还是 char *fp1 都可以看出来:
char 与 *PCHAR 是等价的,而 char * 与 PCHAR 不等价。
char 和 PCHAR 都是数据类型,但 char * 只是一种写法,不代表任何数据类型。
「已注销」
2012-08-10
打赏
举报
回复
再补充一下,C 风格强制类型转换写法:
pstr = (char *)malloc(MAX_PATH);
会让人感觉 char * 是一个类型,故而采用:
char * fp1, fp2, fp3;
这样的写法,极易认为是声明了三个指针。
我个人从不认为 char * 算是一种数据类型。
但是如果我这样写来定义了一个新名称 PCHAR:
typedef char *PCHAR;
此时 PCHAR 与 char 身份一样了,同属于数据类型。
由于 PCHAR 是数据类型,所以这样的声明写法:
PCHAR fp1, fp2, fp3;
即声明了三个 PCHAR 类型的变量,即三个指向 char 的指针。
即:char 与 *PCHAR 是等价的,而非 char * 与 PCHAR 等价。
因为 char * 不是数据类型,而只是一种写法。
xxb249
2012-08-10
打赏
举报
回复
char* fp1,fp2,fp3 ===》char *fp1,fp2,fp3
优先级问题,*只修士fp1 fp2,fp3都是char 并非是指针
自信男孩
2012-08-10
打赏
举报
回复
char* fp1,fp2,fp3 操作符*只是修饰fp1,fp2和fp3都是char类型的。
fp1是占4个字节,fp2和fp3占1个字节。压栈的顺序应该是fp1,fp2,fp3吧。
冰与火
2012-08-10
打赏
举报
回复
char* fp1,fp2,fp3; fp1是指针,其他两个不是,如果你想批量定义指针,你要用typedef char* CHARPTR;
然后CHARPTR fp1, fp2,fp3;就都是指针了。
「已注销」
2012-08-10
打赏
举报
回复
星号应该紧邻变量名,而非类型名。
虽然不管星号紧邻变量还是紧邻类型,都是一样效果,但像上面那样写,会造成误解。
char *fp1, *fp2, *fp3;
声明了三个 char 类型变量:*fp1, *fp2, *fp3。
char *fp1, fp2, fp3;
声明了三个 char 类型变量:*fp1, fp2, fp3。
C 语言只介绍说,* 放在指针类型前面表示对地址“解引用”,也就是说 * 加指针表示指针指向的变量类型,并没说 * 星号放在类型名后面是什么意义。可以这样理解:*fp1 是 char 类型,fp1 当然就是一个指向 char 类型的指针类型。在 Windows SDK 中,有这样的声明方式,我就觉得很好理解:
typedef char *PCHAR;
PCHAR pch = (PCHAR)&a;
用
VC
#.NET开发交互式CAD系统
用
VC
#.NET开发交互式CAD系统,包括结合GDI+和OPENGL两种方案。 联系平台客服可开发票。
VC
基础学习:初学者
指针
指南( 转)
何为
指针
?
指针
基本上和其它的变量一样,唯一的一点不同就是
指针
并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将
指针
作为它们的设计基础,例如链表。 开始 如何定义一个
指针
?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的
指针
: int* pNum...
VC
基础学习:初学者
指针
指南(转)
何为
指针
?
指针
基本上和其它的变量一样,唯一的一点不同就是
指针
并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将
指针
作为它们的设计基础,例如链表。 开始 如何定义一个
指针
?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的
指针
: int* pNumberOn
vc
++学习篇(四)——
指针
今天看了一本关于
vc
++的书,上面将的是一些简单的代码,以前没有注意以为很简单,在家没有事情可做,就对这些
东西
重新详细的看了一边,发现有一些问题是需要注意的,比如:
指针
。以前认为
指针
很少我能用上,但是现在才发现原来这个
东西
也是如此的好用,所以在网上找了一些资料,温习一下。浅析c/c++中的
指针
作者: 潘志翔 出处: yesky 责任编辑: 方舟 [ 2001-12-25 09:34 ] 在学习...
C语言
指针
用法详解
声明: 本文摘自一篇大神做的文档,原文的名字是: 《C语言
指针
用法详解(宝典)》 这里是本人学习他的文章,抄写的笔记。并非本人原创。本文也不产生任何收益。 在底部放置本文的原版pdf的链接。 /***********************************************************************************************************/ 前言:复杂类型说明 要了解
指针
,多多少少会出现一些比较复杂的类型, 所以我先介
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章