第八周:指针与字符串---1-指针A

视频1:取地址运算,&运算符取得变量的地址

#include<stdio.h>

int main()
{
    int a;
    a = 6;

    printf("sizeof(int)=%ld\n",sizeof(int));
    printf("sizeof(a)=%ld\n",sizeof(a));

    printf("sizeof(double)=%ld\n",sizeof(double));

    return 0;
} 

图片说明


图片说明


#include<stdio.h>

int main(void)
{
    int i = 0;

    printf("0x%x\n",&i);

    return 0;
} 

图片说明


warning想说的是输出地址不应该用%x,而应该用%p

#include<stdio.h>

int main(void)
{
    int i = 0;

    printf("%p\n",&i);

    return 0;
} 

图片说明


//以32位架构编译的结果 

#include<stdio.h>

int main(void)
{
    int i = 0;
    int p;
    p = (int)&i;    //强制类型转换

    printf("0x%x\n",p); 
    printf("%p\n",&i);

    return 0;
} 

图片说明


//以64位架构编译的结果 

#include<stdio.h>

int main(void)
{
    int i = 0;
    int p;
    p = (int)&i;    //强制类型转换

    printf("0x%x\n",p); 
    printf("%p\n",&i);

    return 0;
} 

图片说明


以64位架构编译的结果

图片说明


以32位架构编译的结果

图片说明


图片说明


& 不能对没有地址的东西取地址
  &(a+b)?  X
  &(a++)?  X
  &(++a)?  X 

图片说明


图片说明


图片说明


#include<stdio.h>

int main(void)
{
    int i = 0;
    int p;

    printf("%p\n",&i);
    printf("%p\n",&p);

    return 0;
} 

图片说明


//以 32 位架构编译的结果 
//首先 6c 和 68 相差多少
//这是 16 进制,所以 c 相当于 10 进制的 12 
//12 - 8 = 4
//int -> 4

图片说明


图片说明


#include<stdio.h>

int main(void)
{
    int a[10];

    printf("%p\n",&a);
    printf("%p\n",a);
    printf("%p\n",&a[0]);
    printf("%p\n",&a[1]);

    return 0;
} 

图片说明


图片说明


全部评论

相关推荐

Elastic90:公司不要求加班,但 又不允许你准点下班,经典又当又立
点赞 评论 收藏
分享
02-16 13:52
门头沟学院 Java
给🐭🐭个面试机会吧:嘿,mvbatis
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务