C语言数组和指针的区别

来源:互联网 发布:windows软件包下载 编辑:程序博客网 时间:2024/05/17 05:52

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 0
原创粉丝点击