const指针 c语言例子
时间: 2023-01-28 11:41:22 浏览: 94
在 C 语言中,const 指针是一种特殊的指针,它指向的内存位置的值是不能被修改的。
举个例子,假设有一个整型变量 x,它的值为 10。如果定义一个指向 x 的指针 p,则可以通过 *p 来修改 x 的值,例如:
```
int x = 10;
int *p = &x;
*p = 20; // x 的值变成了 20
```
但是,如果定义一个指向 x 的 const 指针 p,则不能通过 *p 来修改 x 的值,因为 *p 被定义为常量。例如:
```
int x = 10;
const int *p = &x;
*p = 20; // 这里会报错,因为 *p 是常量
```
这里的 const 是指针的类型修饰符,它告诉编译器在程序中不能通过这个指针来修改所指向的内存位置的值。
常量指针有时也称为只读指针,因为它只能用来读取所指向的内存位置的值,不能用来修改它。
相关问题
vsprintf()的C语言例子
`vsprintf()`是C语言中的一个函数,它用于格式化并打印变量到字符串缓冲区中。这个函数在stdarg.h头文件中声明,允许你传递可变数量的参数,并按照给定的格式字符串进行格式化。
下面是一个简单的`vsprintf()`的例子:
```c
#include <stdio.h>
#include <stdarg.h>
#define BUFFER_SIZE 50
int main() {
char buffer[BUFFER_SIZE];
int num = 42;
float decimal = 3.14;
// 格式字符串,包含%d和%f占位符
const char* fmt = "The number is %d and the decimal is %.2f.\n";
// 使用vsprintf()函数,fmt后跟位置参数列表
vsprintf(buffer, fmt, (va_list){num, decimal});
printf("Formatted string: %s\n", buffer);
return 0;
}
```
在这个例子中,`vsprintf()`会将`num`和`decimal`的值替换掉`fmt`中的相应占位符 `%d` 和 `%.2f`,并将结果写入`buffer`。注意,`va_list`是一个指向参数列表起点的指针,我们在这里直接传递了`(va_list){num, decimal}`。
c语言const传递参数
在C语言中,使用`const`关键字可以定义常量。当将`const`关键字应用于函数参数时,它表示该参数是只读的,即函数不能修改该参数的值。这种方式可以有效地保护函数外部的变量或数据结构,防止函数对其进行意外的修改。
下面是一个使用`const`关键字传递参数的例子:
```c
void func(const int *num) {
// 不能修改num指向的内存
int temp = *num + 1; // 可以读取num指向的内存
// ...
}
```
在上面的例子中,参数`num`是一个指向`const int`类型的指针,表示它指向的内存是只读的。函数可以读取该内存中的值,但不能修改它。
另外,如果需要在函数中修改参数的值,可以将参数声明为指向非`const`类型的指针,如下所示:
```c
void func(int *num) {
*num = *num + 1; // 可以修改num指向的内存
// ...
}
```
在这种情况下,函数可以修改参数`num`指向的内存中的值。