如何把char指针转化成int型指针

changhairen 2009-01-17 10:29:23
疑问如下,如何吧char指针转化成int型指针

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a[] ={0,1,2,3};
int *pI=a; //int指针
char *pC ; //char指针
pC=pI; //Dev c++(C工程下)这样是可以的,但是VC++得pC=(char *)pI;(感觉是C++对类型的要求更严格吧)
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
printf("打印地址 = %d",(pC+1)); // 为啥没有转换成功(结果地址仅+1而不是+4)?
system("PAUSE");
return 0;
}

...全文
1985 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
aduwj1984 2009-02-06
  • 打赏
  • 举报
回复
学习了
我看你有戏 2009-02-06
  • 打赏
  • 举报
回复

我觉得可以这样理解

假设有一种类型为TYPE

TYPE A;
TYPE *p;
p = &A;

p + 1 永远都是 p所指的内存首地址 向 后 移动 sizeof(TYPE) 个单位

shakencity 2009-02-06
  • 打赏
  • 举报
回复
有点晕了,怎么都在说强制转换,这么说的话,所有的强制转换都是暂时的了,如同赋值是暂时的一样了
No_senses 2009-02-05
  • 打赏
  • 举报
回复
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
这个转换只在这一行有效,下一行pC还是char *


就这样转了
yuzl32 2009-02-05
  • 打赏
  • 举报
回复

pI =(int*)pC; //类型转换
printf("打印地址 = %d",(pI+1)); // 既然上一行代码转换了,那就用转换后的pI
soldierluo 2009-02-05
  • 打赏
  • 举报
回复
仰视一下
jackzhhuang 2009-02-05
  • 打赏
  • 举报
回复
是什么类型的指针就会加多大的地址
pI本来就是char*,+1只会加1个字节。
ilprogram 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 brookmill 的回复:]
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
这个转换只在这一行有效,下一行pC还是char *
[/Quote]
支持!

如果这样改一下:
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
printf("打印地址 = %d",(pC+1)); // 为啥没有转换成功(结果地址仅+1而不是+4)?

改为:
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
printf("打印地址 = %d",(pI+1)); // 为啥没有转换成功(结果地址仅+1而不是+4)?
那输出的地址应该是+4
dreamcs 2009-02-01
  • 打赏
  • 举报
回复
一日为师,终生为师.
tjiang163 2009-02-01
  • 打赏
  • 举报
回复
同意brookmill 的看法.
pauliuyou 2009-01-23
  • 打赏
  • 举报
回复
不同类型的指针对相同的数据的解释是不一样的.
SJError 2009-01-23
  • 打赏
  • 举报
回复
强制转换对转换指针本身是不变的,只是产生一个临时的新类型的指针
only_lonely 2009-01-23
  • 打赏
  • 举报
回复
恩。学习了!
thinkboy234 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 brookmill 的回复:]
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
这个转换只在这一行有效,下一行pC还是char *
[/Quote]
也是这样想的
sanguomi 2009-01-18
  • 打赏
  • 举报
回复
PC自身为 Char *
+ 1后他的地址不再指向 前边那个数组了
不加1 时
cout<< *(int *)pC; 输出 0

pC = pC + 1;
cout<< *(int *)pC;
hemiya 2009-01-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 changhairen 的帖子:]
疑问如下,如何吧char指针转化成int型指针

char *pC ; //char指针
pC=pI; //Dev c++(C工程下)这样是可以的,但是VC++得pC=(char *)pI;(感觉是C++对类型的要求更严格吧)
pI =(int*)pC; //类型转换(如何吧pC转化成int型指针)
printf("打印地址 = %d",(pC+1)); // 为啥没有转换成功(结果地址仅+1而不是+4)?
[/Quote]

pI =(int*)pC
pc还是pc,pc本身的类型是不会变的.
转换变的只是把pc的值取出后临时当作int *看待.
na2650945 2009-01-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brookmill 的回复:]
printf("打印地址 = %d",((int*)pC+1));
[/Quote]
感觉只正解。
定义在开始。
强制转换只在这一行有效。
学习了。
shyli 2009-01-18
  • 打赏
  • 举报
回复
pI =(int*)pC,强制转换只是生成一个临时的int*并赋值给pI,pC本身还是char*。
叶落寒山 2009-01-18
  • 打赏
  • 举报
回复
printf("打印地址 = %d",((int*)(pC)+1)); // 在你用的地方强制转化。
waizqfor 2009-01-17
  • 打赏
  • 举报
回复
printf("打印地址 = %d",(int *)(pC)+1);//这强制转换一下  
加载更多回复(7)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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