📜  C |指针基础问题4

📅  最后修改于: 2021-05-29 13:13:13             🧑  作者: Mango

考虑一个编译器,其中int占用4个字节,char占用1个字节,而指针占用4个字节。

#include 
  
int main()
{
    int arri[] = {1, 2 ,3};
    int *ptri = arri;
  
    char arrc[] = {1, 2 ,3};
    char *ptrc = arrc;
  
    printf("sizeof arri[] = %d ", sizeof(arri));
    printf("sizeof ptri = %d ", sizeof(ptri));
  
    printf("sizeof arrc[] = %d ", sizeof(arrc));
    printf("sizeof ptrc = %d ", sizeof(ptrc));
  
    return 0;
}

(A) sizeof arri [] = 3
PTRI的大小= 4
sizeof arrc [] = 3
ptrc的大小= 4
(B) sizeof arri [] = 12
PTRI的大小= 4
sizeof arrc [] = 3
ptrc的大小= 1
(C) sizeof arri [] = 3
PTRI的大小= 4
sizeof arrc [] = 3
ptrc的大小= 1
(D) arri []的size = 12
PTRI的大小= 4
sizeof arrc [] = 3
ptrc的大小= 4答案: (D)
说明:数组的大小是元素数量乘以元素类型,这就是为什么我们将sizeof arri设置为12,将sizeof arrc设置为3的原因。对于编译器,指针的大小是固定的。对于编译器,所有指针类型都占用相同数量的字节。这就是为什么我们在ptri和ptrc上都得到4的原因。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。