C语言经典易错题目

1.

    int a[2][2][3]={{{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}};
    int *ptr=(int*)(&a+1);
    printf("%d %d",*(int*)(a+1),*(ptr-1));

答案:7  12

2.

    char str[] = "Hello";
    char *p=str;
    int n = 10;
    printf("%d,%d,%d,",sizeof(str),sizeof(p),sizeof(n));

答案:6,  44

3.

复制代码
#include <stdio.h>
#include <stdio.h>

int main() {
    int* pint = 0;
    pint += 6;
    printf("%d\n", pint);
}

两个点:
1.在初始化中只有地址才能赋值给指针,因此*int p=0是指p指向地址0x00。
2.int型数占4个字节,因此加6表示偏移了24个字节,结果的地址应为0x18,即是24.
复制代码

4.

        unsigned char *p1;
    unsigned long *p2;
    p1=(unsigned char *)0x801000;
    p2=(unsigned long *)0x801000;
    printf("%X,%X",p1+5,p2+5);    

答案:
0x8010050x801014

5.

 

posted @   不折不扣  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示