printf-求大神解答,关于内存解析以及类型转换的编译器底层实现,图中的结果请给我一个完整的解释,谢谢

问题描述

求大神解答,关于内存解析以及类型转换的编译器底层实现,图中的结果请给我一个完整的解释,谢谢

#if 1
#include
using namespace std;

int main()
{
char str[] = "12345";
long pLong = (long)str;
pLong++;
printf("%dn", pLong);
return 0;
}
#endif

解决方案

这代码在我的编译器上没法编译

我修改了下

#include <stdio.h>

int main()
{
    char str[] = "12345";
    long *pLong = (long*)str;
    pLong++;
    printf("%dn", (int)*pLong);
    return 0;
}

结果是53。
内存是这样的(十进制)
49 50 51 52 53 0 0 0 0...
你pLong++,向后移动4字节。因为intel是小端处理器,所以是53

解决方案二:

你要是输出指针,只知道它在堆栈上,但是这个就不好说了。

时间: 2024-09-04 14:17:20

printf-求大神解答,关于内存解析以及类型转换的编译器底层实现,图中的结果请给我一个完整的解释,谢谢的相关文章

求大神解答一下-关于List添加的问题为什么我在foreach中循环已经NEW出来了个对象但是添加不进去?

问题描述 关于List添加的问题为什么我在foreach中循环已经NEW出来了个对象但是添加不进去? 我在代码 List<实体名> list = new List<实体名>(); try { //查询xx表中的工位号与xx表中的对应的数据 var v = sortingEntity.表名.Where(a => a.station == null).Where(s => s.dps_date == time).Distinct(); foreach (var item i

qt-用Qt连接mysql遇到问题,求大神解答

问题描述 用Qt连接mysql遇到问题,求大神解答 #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); qDebug() << "available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach (QString driver, drivers)

C语言 神奇算式。求大神解答!!!

问题描述 C语言 神奇算式.求大神解答!!! 标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 解决方案 http://zhidao.baidu.com/link?url=auHsWuamEqBq75Cug4hLrZnoWupqp1H_DLpBxCwmcDJOc2xpCf7ekRWx_YuGqDPp-uuj84RKKPGWeFlPA_UK4BZihp7FBQx3

内存管理-一道编程题用c语言实现这些功能时间有限1天时间求大神解答

问题描述 一道编程题用c语言实现这些功能时间有限1天时间求大神解答 有用户空间100kb,并规定作业的相应程序浇入内存连续区域,并不能被移动.作业与进程均采用sjf算法.输入为一组作业的进入时间,需要的内存容量(不超过100k)和运行时间. 要求: (1)按时间顺序给出每个作业的执行顺序,开始时间和结束时间,以及发生调度时内存各分区的状态: (2)计算这组作业的平均周转时间和平均带权周转时间: (3)实现作业一级调度和进程一级调度,包括调度算法和数据结构: (4)实现动态分区内存管理,包括内存分

java数组的内存分配问题,求大神解答

问题描述 请问我定义一个长度为1000的int型数组,debug时发现数组的值是100个一组显示的,如图请问为什么?求大神解答 解决方案 解决方案二:这个没具体研究过,我的理解是:方便管理,就好像100以内的数组是单个存储的,10000的数组是200存储的解决方案三:引用1楼shijing266的回复: 这个没具体研究过,我的理解是:方便管理,就好像100以内的数组是单个存储的,10000的数组是200存储的 我觉得会不会是跟JVM中的内存最小单位有关,就像一般做索引时,R树的叶子节点大小就需要

android-上传APK解析错误,有人遇到吗?求大神解答

问题描述 上传APK解析错误,有人遇到吗?求大神解答 今天在豌豆荚上传应用出现解析错误,有遇到的同志们么?求解答,我吧版本都改到了最低为8了. apk的包也缩短名称了.以上都不行. 解决方案 出现这样的问题一般是由于签名导致的,建议您检查签名. 解决方案二: 这种情况有可能时你签名打包时候出错了,你确定签名正确了吗

c++-C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突

问题描述 C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突 #include using namespace std; void g(char* p) { int i=0; char* a=p; char* b="dcba"; for(i=0;i<4;i++) { *a=*b; a++; b++; } } void main() { char* x="abcd"; char* p=x; g(p); cout<&l

c语言 c++-c语言求大神解答,一个数组的基础问题

问题描述 c语言求大神解答,一个数组的基础问题 数组的地址是什么?是不是就是数组名,也就是第一个元素的地址,也就是这个数组的首地址? 解决方案 数组名可以当成指向数组首元素的地址使用. 例如:int a[10]; 可以通过: cout<<*a<<endl; //来输出数组a中的第一个元素. cout<<*(a + i)<<endl; //来输出数组中的第i个元素. 下面两个输出的地址值也是相同的. printf("--->%pn",

c语言-C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助

问题描述 C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助 这是出现死循环的代码bool solution(Move move, Pos &beginPos){ if(!move) { printf("solution Failed!"); return false; } int chessBoard[8][8] = {0}; push(move, beginPos); chessBoard[beginPos.mX][beginPos.mY] = 1; int ste