2.1 C语言数组与指针

指针和数组
                const int *p;  int const *p;  int *const p;  const int *const p;
                常量指针       常量指针       指针常量       常量指针常量
                *p不变         *p不变         p不变          p和*p都不变
                
                char *p="abcdef";    p指针占有4字节,其字符串存储在静态区
                char a[]="12345\0";    a数组占有7字节,其字符串存储在栈上面
                    这样定义即字符串数组,使字符串结尾有'\0',
                    编译器还是会在字符串后面加上'\0'
                a = &a    但是意义不同
                a  代表a[0]元素的地址
                &a 代表 a 数组的地址
                sizeof(a)=7   计算a数组的大小
                sizeof(&a)=4    gcc中始终等于 4 (无论是什么数组)
                a+1  等于 a[1]的地址
                &a+1 等于 a[sizeof(a)+1]的地址
                
                指针和指针的减法运算有意义:间隔距离是多少个单位(基类型宽度)
                指针和整数的加减运算有意义:以基类型宽度为单位移动指针
                
                定义为数组,声明为指针;定义为指针,声明为数组,这两种都是错误的.
                文件1:
                    char a[100];        char *p= "abcdef";
                文件2:
                    extern *a;            extern char p[];
                
                函数指针
                    (*(char**(*)(char**,char**))0)(char**,char**);
                    char *(*pf[3])(char *p);     函数指针数组
                    char *(*(*pf)[3])(char *p);  函数指针数组的指针

猜你喜欢

转载自blog.csdn.net/u013845608/article/details/85617555
2.1