一段C代码

#include<stdio.h>
void test1(char *a){
    a = "Test";
}
void test2(char **a){
    *a = "Right";
}
void test3(char *a){
    a = "second";
}
int main(){
    char *a = "Hello";
    test1(a);
    printf("%s\n", a);

    char *b = "Picture";
    test2(&b);
    printf("%s\n", b);

    char c[] = "First";
    test3(c);
    printf("%s\n", c);
    return 0;
}

可以试一试,看看运行后答案和你想的是否一样。如果理解了C中的指针,就很简单,要是像我之前那样一知半解,就纠结了…

Tags :

2 thoughts on “一段C代码”

  1. 似乎有见到你以前写过…是不是说,第一个和第三个函数改变的都是指针的值而非指针指向的值?
    比如第一个例子,假设传给函数的指针值是 0x01,函数执行的时候会改变指针 a 的值让其指向常量区的 “Test” 的位置(比如说0x99),但并没有改变 0x01 指向的原来的值 “Hello”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Click the right image To submit your comment: