二阶指针和一阶指针实例区分

来源:互联网 发布:凤凰金融 以大数据为 编辑:程序博客网 时间:2024/06/07 05:45
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <stdlib.h>using namespace std;void func1(char *s){s = (char*)malloc(sizeof(char));strcpy(s,"hello");}///func1() 函数之所以输出empty,没有改变,是传入的参数只是指针变量的一个复制品,并未真正改变void func2(char **s){   char *r = *s;///让r 和*s指向同一个地方   r = (char*)malloc(sizeof(char));   strcpy(r,"hello");///但是现在又让r指向"hello"这个字符串,但是*s仍然指向原来的地方,没有改变*s指向的值}///func2() 函数没有改变void func3(char **s){*s = (char*)malloc(sizeof(char));strcpy(*s,"hello");}///func3()改变了*s的值int main(){char *s = NULL;func1(s);if(!s)cout << "empty" << endl;else cout << s << endl;     func2(&s);if(!s)cout << "empty" << endl;else cout << s << endl;func3(&s);if(!s)cout << "empty" << endl;else cout << s << endl;return 0;}

原创粉丝点击