Linux 下C语言 指针学习 二 (数组与指针)

不少人经常会认为指针与数组有着至关暧昧的关系,其实数组并不表明指针,数组的出现是为了把具备相同类型的若干变量按有序的形式组织起来。而指针的出生是为了经过指针去访问内存单元,这是文档上介绍的,读起来毫无瑕疵,由于太过官方,我所认知的数组其实就是在内存上申请一块固定大小的连续空间,注意是连续的空间哦,而且这块空间只能存放同一类型的数据,何为同一类型呢,好比说 int a[10];  假设这句代码是在函数里的,因此会在栈中申请一块大小为sizeof(int)*10 的空间来存放int类型的数据,若是你不知道为何会在栈里申请的话,我就在插一句话,若是知道就跳过这句话:c程序在运行时共有两个存储区,一个是静态存储区,另外一个是动态存储区,在动态存储区里有一个栈和一个堆,函数就存储在栈上,在函数声明的变量也天然存储在栈中,不要问我为何,这就是规定。数组







指针无论在什么状况,永远都是那么大的空间,(无符号整型的大小),而数组的大小要看声明的大小。声明多大,他就多大,标识符a即表示数组,他记录了这个数据的头指针。能够把这个头指针值赋给一个指针类型的变量,这样这个指针类型的变量就指向了这个数组的头位置;函数

        对于字符数组数组而言,好比说char buf[10]="I AM WK“, 在这句话中,双引号里面的内容是放在静态存储区的,这句话其实是把静态存储区的"I AM WK" 彻底复制到本身的空间里,而 char *p="I AM WK“  是把 静态存储区的"I AM WK" 的首地址 赋给p , 这个静态存储区的字符串是一个常量,是不可更改的,因此当你用    *p="ssss"  这样的复制语句的时候编译会不经过。spa

相关文章
相关标签/搜索