引用和指针的一个小示例

// 11.2.1 函数中的引用 //: C11: reference.cpp // simple C++ reference int* f(int* x) { (*x)++; return x; //安全的,x在域外 } int& g(int& y) { y++; // 与函数f的效果一样 return y;//安全的,y在域外 } int& h() { //int q; //return q; static int six; return six; //安全,six在域外仍然有效 } //char* 定义的指向常量区,基指向的内存不能更新。 //对于字符串常量分配在常量区,具有全局变量一样的生存期 //char[] 定义的在栈上,可以更新 //此时用字符串初始化局部数组,字符串并不分配内存, //str数组分配在栈上,具有局部生存期, char* j() { // char str[20] = "Hello Baby!";//"Hello Baby!"开在栈上,栈中的变量是跟着函数走的 char *str1 = "Hi";//"Hi"开在常量区,这个指针变量str1“指向”的是 //一个字符串--实际是在静态区的一个常量字符数组 str[1] = '2'; //正确,不可更新 //str1[1] = '2'; //错误,可以更新 return str1; } int main() { int a = 0; int* pi; //pi其实也是对a地址内的内容进行操作 pi = f(&a);//丑了一点,但是显式的 g(a); //干净,隐式 j(); }///:~

 

从《C++编程思想》上摘下来的,中间还搜了点网上的资料

你可能感兴趣的:(编程,c)