初始c指针
指针是C语言中非常重要的概念之一,它是一种变量类型,用于存储其他变量的内存地址。指针变量本身也有自己的内存地址。
在C语言中,指针变量使用一个星号(*)来声明,如:
int *p;
这里的p是一个指向整型变量的指针,它可以指向任何一个整型变量。我们可以使用“&”运算符来获取一个变量的内存地址,并将其赋值给指针变量,如:
int a = 10;
int *p = &a;
这里我们将变量a的地址赋给了指针变量p,p现在指向变量a。
通过指针变量,我们可以访问该指针指向的变量,如:
int b = *p;
这里我们通过*p获取了指针p所指向的变量a的值。
指针在C语言中有许多重要的应用,比如动态内存分配、函数传递参数等等。但是指针也非常容易出现一些问题,比如空指针、野指针等,因此在使用指针时需要特别小心。
函数传参
在 C 语言中,函数传递参数有两种方式:
1. 值传递:将参数的值传递给函数,函数接收到的是实参的副本,对该参数进行修改不会影响到原来的实参。
例如:
```
void func(int a) {
a = a + 1;
printf("%d\n", a);
}
int main() {
int num = 10;
func(num);
printf("%d\n", num); // 输出 10
return 0;
}
```
在上面的代码中,num 是实参,传递给 func 函数时是将 num 变量的值(10)传递给了 a 参数,func 函数对 a 进行修改,但是并不会影响到 num 变量的值,因为 a 只是 num 的一个副本。
2. 引用传递:将参数的地址传递给函数,函数接收到的是实参的地址,可以通过该地址修改实参的值。
例如:
```
void func(int *a) {
(*a)++; // 使用 *a 代表 a 所指向的变量
printf("%d\n", *a);
}
int main() {
int num = 10;
func(&num); // 将 num 的地址传递给 func 函数
printf("%d\n", num); // 输出 11
return 0;
}
```
在上面的代码中,func 函数的参数是一个指向 int 类型变量的指针,当调用 func 函数时,将变量 num 的地址传递给了 a 参数,func 函数使用 *a 来修改 num 变量的值,因此在 func 函数执行完后,num 变量的值被改为了 11。