C语言数组和指针的区别

C语言数组和指针的区别

数组和指针在编译器看来的区别在于:数组在符号表里本身就是一个地址,指针在符号表里的内容才是一个地址

例如:
char a[9] = “abcd” 编译器在查找a[1]时,首先在符号表看到a代表了4460地址 然后计算 4460 + i 的地址,找到字符b

char *b = a; 编译器在查找b[1]时,首先在符号表找到b代表了7000地址,然后在7000地址的内容为4460,然后再计算 4460 + i 的地址,再找到符号b

#include<stdio.h>

void print_size(char str[])
{
    printf("print size:%d\n",sizeof(str) );
}


int main()
{
    char my_arry[100];
    char * my_point;
    my_point = my_arry;
    printf("array:%d\npoint:%d\n",sizeof(my_arry),sizeof(my_point));  // 100,8
    print_size(my_arry); // 8,退化为指针,传说这样设计是为了提高效率
    print_size(my_point); // 8
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值