勒布朗1997 发表于 2019-4-5 14:38:27

C. %p输出地址的问题

见代码:
#include<stdio.h>
int main()
{
    char ch;//定义字符变量
    int i;
    char *p;
    p=NULL;
    ch='A';
    for(i=0;i<65;i++)
    {p++;}
    printf("%p\n",ch);
    printf("%p\n",p);
    return 0;
}

输出:
0x41
0x41

问题:
这个时候,输入字符A。指针从NULL开始累加65次。最后%p输出地址都为0x41。那这个时候是变量ch在0x41这个地址吗?

My_A 发表于 2019-4-5 15:04:40

本帖最后由 My_A 于 2019-4-5 15:11 编辑

因为NULL等于0,所以p的值为0,且类型为Char*,经过65次循环后p等于65,十六进制为41
还有ch的值为'A',在ASCII表中"A"的值为0x41

输出ch的地址应该用printf("%p",&ch)
页: [1]
查看完整版本: C. %p输出地址的问题