int(long,short)型指针和char型指针的相互转换

int* p = 0x1234;   //int型指针p,p为一个地址,*p取从地址p开始的连续的4字节的数据。(不知道对不对)
char* pc; //char型指针pc,pc为一个地址,*pc取从地址pc开始的1个字节的数据。(不知道对不对)
 pc = (char*)p;

  那么*pc的值是什么?

答案:

pc指针指向低字节的地址,也就是指向34的地址

所以printf("%x\n",*pc);

控制台输出34

好的,我来为您解释如何定义不同类的数组指针,并打印出数组元素之间的字节数。 首先,我们需要知道各种数据类的大小: - char: 1字节 - short: 2字节 - int: 4字节 - float: 4字节 - double: 8字节 - long: 4或8字节(取决于系统) - long long: 8字节 下面是实现这个功能的C语言代码: ```c #include <stdio.h> int main() { char charArray[5]; short shortArray[5]; int intArray[5]; float floatArray[5]; double doubleArray[5]; long longArray[5]; long long longLongArray[5]; char *charPtr = charArray; short *shortPtr = shortArray; int *intPtr = intArray; float *floatPtr = floatArray; double *doublePtr = doubleArray; long *longPtr = longArray; long long *longLongPtr = longLongArray; printf("char数组元素间隔: %ld字节\n", (char*)(charPtr+1) - (char*)charPtr); printf("short数组元素间隔: %ld字节\n", (char*)(shortPtr+1) - (char*)shortPtr); printf("int数组元素间隔: %ld字节\n", (char*)(intPtr+1) - (char*)intPtr); printf("float类数组元素间隔: %ld字节\n", (char*)(floatPtr+1) - (char*)floatPtr); printf("double类数组元素间隔: %ld字节\n", (char*)(doublePtr+1) - (char*)doublePtr); printf("long数组元素间隔: %ld字节\n", (char*)(longPtr+1) - (char*)longPtr); printf("long long数组元素间隔: %ld字节\n", (char*)(longLongPtr+1) - (char*)longLongPtr); return 0; } ``` 这段代码首先定义了各种类的数组对应的指针。然后,我们使用指针算术来计算数组中连续元素之间的字节数。 具体来说,(char*)(ptr+1) - (char*)ptr 计算了两个相邻元素地址之间的差值,这个差值就是元素之间的字节数。 注意: 1. 我们将指针转换(char*)是为了确保计算结果以字节为单位。 2. 这种方法适用于连续存储的数组。如果使用非连续存储的数据结构(如链表),结果可能不准确。 3. 在某些系统上,long的大小可能不同(4字节或8字节)。这取决于具体的编译器系统架构。 4. 这段代码假设数组在内存中是连续存储的,这在C语言中是成立的。 通过运行这段代码,您可以看到各种类数组中元素之间的字节数。这对于理解数据类的大小内存布局很有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值