刚刚发现了整形指针和指向字符串的指针指针之间的区别

我做了个梦,梦醒了,梦仍在继续...
指针、字符串与整型数据类型的转换
再也不用小心翼翼的实验各种数据类型转换的API看看是否能达到自己想要的效果。只需强制类型转换与位运算结合,各种数据类型转换就能很轻松的实现。
抛砖引玉一下。
#include "Windows.h"
/////////////////////////////////////////////////
//sld 字符串转换为指针值
/////////////////////////////////////////////////
void atop(char* src, void** pp)
DWORD dwTemp = 0;
for(int i=0;i&4;i++)
dwTemp += src[i]&&8*(3-i);
*pp = (void*)(DWORD)(dwTemp);
///////////////////////////////////////////////
//sld DWORD 转换为 字符串
///////////////////////////////////////////////
void dtoa(DWORD src, char* dest)
for(int i=0;i&sizeof(DWORD);i++)
dest[i] = src&0
src = src&&8;
dest[sizeof(DWORD)] = '/0';
/////////////////////////////////////////////////
//sld 字符串 转换为 DWORD
/////////////////////////////////////////////////
void atod(char* src, DWORD& dest)
for(int i=0;i&sizeof(DWORD);i++)
dest+= src[i]&&i*8;
///////////////////////////////////////////////////
//sld DWORD 转换为 指针
///////////////////////////////////////////////////
void dtop(DWORD src, void** pp)
/////////////////////////////////////////////////
//sld 指针转换为字符串
/////////////////////////////////////////////////
void ptoa(void* p, char* dest)
for(int i=0;i&4;i++)
dest[i] = (((DWORD)(p)) & (0x000000ff&&(3-i)*8))&&(3-i)*8;
void main()
//DWORD 转换为 字符串
DWORD dwCRC32 = 0x;
dtoa(dwCRC32, szCRC);
//字符串转换为指针值
char sz[4] = {0x11, 0x22, 0x33, 0x44};
void* p = NULL;
atop(sz, &p);
//指针 转换为 字符串
char szDst[4];
ptoa(p, szDst);
//DWORD 转换为 字符串
DWORD dwDeviceID = 6;
char szDeviceID[32];
dtoa(dwDeviceID, szDeviceID);
//字符串 转换为 DWORD
DWORD dwD = 0;
atod(szDeviceID, dwD);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!指针的类型都是整形?指针所指向的类型可以是别的类型_百度知道
指针的类型都是整形?指针所指向的类型可以是别的类型
int *p 我用sizeof p算了下不管类型怎么改变p总是4个字节
我有更好的答案
sizeof 这个函数是计算p所占用的内存字节数,在32位系统下,指针表示的是一个地址,是8位16进制数,它所占用的内存空间是4个字节。你可以理解指针是一个地址,这个地址里边放着它指向东西的地址。p是它的地址,*p是他指向的东西。
采纳率:48%
为您推荐:
其他类似问题
整形的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。追求卓越,拒绝平庸
字符串指针与一维数组指针的区别
字符串指针与一维数组指针有很多共同点,但也有一些区别:
1、赋值有要求。
  我们可以在程序中将一个字符串赋给一个字符串指针变量,但不可以将一个字符串赋给一个数组名。即:
允许:char *p; p = "I am a teacher !"; 但不可心: char a[20]; a = "I am a teacher!";这是因为字符串指针变量本身是一个变量,而字符串代表了其首地址,因而赋值是理所当然的;但数组就不一样,数组一旦定义后,数组在内存中的存储单元即确定,数组名所代表的数组首地址即确定,它便不可改变,因而不可将一个字符串赋给数组名。
2、指针变量必须有明确的指向目标。
当指针变量定义后,程序中必须先确定其指向的目标,然后才可对其目标变量赋值,融导致系统死机。如:char *p;
scanf("%s",p);这样的程序很危险。因指针变量p被定义后,未确定其指向的目标,很有可能p的初值为0,即指向内存地址为0的一系列单元,便改变了系统程序,导致系统崩溃、死机。
3、存取字符串中的字符特别。
尽管字符数组和字符串指针变量有所不同,但可以相同的形式来存取字符串的字符,即以相同的方式来表示数组元素。如:char *p = "I am a teacher!";我们仍可用p[0],p[1]……依次表示字符I,a……等。
4、可灵活使用字符串指针变量。
由于字符串指针变量存储字符串常量,因而在字符串常量出现的地方可用一字符串指针变量来取代。如:
#include &stdio.h&
int main(){ char *format = "a = %d,b = %d/n"; int a = 10,b = 20; printf(format, a, b);}
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!整型指针与字符串指针区别【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:584,057贴子:
整型指针与字符串指针区别收藏
#include &stdio.h&#include &conio.h&int main(){int *ps,x[3];x[0]=5;x[1]=6;x[2]=7;ps=x;//这里赋予指针地址指向*ps=*ps+2;printf("%d",*ps);//这里给指针赋值char *str="This is string";//这里给赋予指针地址指向printf("%s",str);//这里给指针赋值,如果带上*号str就变成了指针地址了为什么?getch();return 0;}这个问题查了很多资料都说的含含糊糊,不堪明朗希望大虾详解。
这个你学了字符串应该就懂了
因为字符串本身就是一个首地址?
原来printf("%s",str)其中str就是指地址值,我学的太快了还要不停的注意细节才行呀
登录百度帐号}

我要回帖

更多关于 指针与字符串 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信