汉扬编程 C语言入门 C语言指向指针的指针为什么有两个星号?

C语言指向指针的指针为什么有两个星号?

我们先看如下案例:

#include <stdio.h>void f(int x){    x = x + 20;}​int main(void){    int x = 10;    printf( "Before the call f(x): x = %d\\n", x );    f(x);    printf( "After the call f(x): x = %d\\n", x );    return 0;}输出结果为:

Before the call f(x): x = 10After the call f(x): x = 10我们看到x的值并没有改变,因为函数f处理的的x的副本(a copy of object x)。 接下来,我们将函数重新设计:

include <stdio.h>void f(int *x){    *x = *x + 20;}int main(void){    int x = 10;    printf( "Before the call f(x): x = %d\\n", x );    f(&x);    printf( "After the call f(x): x = %d\\n", x );    return 0;}这种情况下,输出结果为:

Before the call f(x): x = 10

After the call f(x): x = 30

这回,我们将x本尊的地址传入到函数中,因而,在函数的内部,x值得以改变。 我们进一步将该过程抽象出来: 如果定义一个指针:

char *p;然后,我们将其传入到函数中,

void f( char *p );这个函数处理的是原指针的副本所指向的值,任何变化都不会变更原指针。如果我们试图改变指针的值,必须应用如下的声明:

void f( char **p );并按照如下的形式调用:

f(&p)

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6739.html

记录C语言课程设计报告-图书管理系统

c语言怎么编译(详细示例)

发表评论

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

返回顶部