C基础第27课--数组的本质分析

学习自狄泰软件学院唐佐林老师C语言课程,文章中图片取自老师的PPT,仅用于个人笔记。


在这里插入图片描述

在这里插入图片描述

实验1 : sizeof(数组名) 求 数组大小

#include <stdio.h>

int main()
{
    int a[5] = {1, 2};
    int b[] = {1, 2};
    
    printf("a[2] = %d\n", a[2]);
    printf("a[3] = %d\n", a[3]);
    printf("a[4] = %d\n", a[4]);
    
    printf("sizeof(a) = %d\n", sizeof(a));
    printf("sizeof(b) = %d\n", sizeof(b));
    printf("count for a: %d\n", sizeof(a)/sizeof(int));
    printf("count for b: %d\n", sizeof(b)/sizeof(int));
    
    return 0;
}

mhr@ubuntu:~/work/C$ ./a.out 
a[2] = 0
a[3] = 0
a[4] = 0
sizeof(a) = 20
sizeof(b) = 8
count for a: 5
count for b: 2
mhr@ubuntu:~/work/C$ 
mhr@ubuntu:~/work/C$ 

在这里插入图片描述

实验2

#include <stdio.h>

int main()
{
    int a[5] = { 0 };

    printf("a = %p\n", a);
    printf("&a = %p\n", &a);
    printf("&a[0] = %p\n", &a[0]);
    
    return 0;
}

mhr@ubuntu:~/work/C$ gcc 27-2.c
mhr@ubuntu:~/work/C$ 
mhr@ubuntu:~/work/C$ 
mhr@ubuntu:~/work/C$ ./a.out 
a = 0x7fff43e20ce0
&a = 0x7fff43e20ce0
&a[0] = 0x7fff43e20ce0
mhr@ubuntu:~/work/C$ 

在这里插入图片描述

实验3

#include <stdio.h>

int main()
{
    int a[5] = {0};
    int b[2];
    int* p = NULL;
    
    p = a;
    
    printf("a = %p\n", a);
    printf("p = %p\n", p);
    printf("&p = %p\n", &p);
    printf("sizeof(a) = %d\n", sizeof(a));
    printf("sizeof(p) = %d\n", sizeof(p));
   
    printf("\n");

    p = b;
    
    printf("b = %p\n", b);
    printf("p = %p\n", p);
    printf("&p = %p\n", &p);
    printf("sizeof(b) = %d\n", sizeof(b));
    printf("sizeof(p) = %d\n", sizeof(p));
    
   // b = a;
  
    return 0;
}







mhr@ubuntu:~/work/C$ ./a.out 
a = 0x7ffe4a002cf0
p = 0x7ffe4a002cf0
&p = 0x7ffe4a002cd8
sizeof(a) = 20
sizeof(p) = 8

b = 0x7ffe4a002ce0
p = 0x7ffe4a002ce0
&p = 0x7ffe4a002cd8
sizeof(b) = 8
sizeof(p) = 8
mhr@ubuntu:~/work/C$ 

在这里插入图片描述

发布了192 篇原创文章 · 获赞 100 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/LinuxArmbiggod/article/details/104051439
今日推荐