社区
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分配地址是否分配的过程图和呢
...全文
243
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
作业
写回复
配置赞助广告
用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
基础学习:初学者
指针
指南( 转)
指针
基本上和其它的变量一样,唯一的一点不同就是
指针
并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将
指针
作为它们的...
VC
基础学习:初学者
指针
指南(转)
指针
基本上和其它的变量一样,唯一的一点不同就是
指针
并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将
指针
作为它们的...
指针
数组&数组
指针
的分配内存及函数参数 C语言版
所以下定决心一定要弄
清楚
这个问题,然后不好的是网上的资料总是解决的并不
清楚
,总是在纠结什么是
指针
数组什么是数组
指针
,看了《C缺陷和陷阱》也没有我想要的
东西
。要么就是C和C++混为一谈,new int[5]这种语法C...
vc
++学习篇(四)——
指针
今天看了一本关于
vc
++的书,上面将的是一些简单的代码,以前没有注意以为很简单,在家没有事情可做,就对这些
东西
重新详细的看了一边,发现有一些问题是需要注意的,比如:
指针
。以前认为
指针
很少我能用上,但是现在...
C++中引用,
指针
,
指针
的引用,
指针
的
指针
定义一个
指针
的三种写法都对:1. int * p; 2. int* p; 3. int *p; 习惯不同而已 定义一个函数
指针
的三种写法都对:1. int *p(); 2. int * p(); 3. int* p(); 1、
指针
传递和引用传递 在C语言中,如果要实现...
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章