标 发信站: [数组和指针的分配] 数组是开辟一块连续的内存空间,数组本身的标示符代表整个数组,可以用sizeof取得真 实的大小 指针则是只分配一个指针大小的内存,并可把它的值指向某个有效的内存空间 [空间的分配] [全局的和静态的] char 一个指针,指向只读数据块(section)里的 "hello ",可被编译器放入字符串池(也就是说, 你在写一个char char 一个数组,分配在可写数据块(section),不会被放到字符串池中 [局部] char 一个指针,指向只读数据块(section)里的 "hello ",可被编译器放入字符串池(也就是说, 你在写一个char 是说,指针是局部变量,他指向的数据却是全局的. char 一个数组,分配在堆栈上,初始化由编译器进行(短的话直接用指令填充,长的就从全局字 符串表拷贝),不会被放到字符串池中(但是却可能从字符串池中拷贝过来),也不应该返回 它的地址. [代码中的字面字符串] printf( "%s\n ", "hello "); 这两个字面常量( "%s\n "和 "hello "),都在只读数据块里 [用途] 1.全局指针 用于不需要修改内容,却可能会修改指针的情况(当然,不修改也没人反对) 2.全局数组,用于不需要修改地址,却需要修改内容的场合 3.既需要修改指针,有需要修改内容怎么办呢?定义一个数组,在定义一个指针指向它就可 以了 4.函数中如果不需要修改字符串的内容,应该尽量用char*p= "xxx "这种写法.初始化的局 部字符数组影响效率,一般应该尽量避开(应该使用的情况下则不要犹豫) 以上说的是VC6的情况, |
|