C语言系列——const关键字与sprintf()函数

C语言系列——const关键字与sprintf()函数

const关键字

可以修饰变量、数组、指针、函数参数等。

1、 修饰变量与数组:

C语言中采用const修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。

const int i=10;
const int arry[4]={1,2,3,4,5};

变量i具有只读特性,不能够被更改;若在之后的程序中对i重新赋值,如i = 10;是不被允许的。数组arry[]同样如此。

值得注意的是,定义变量的同时,必须初始化。

此外,const修饰变量还起到了节约空间的目的,通常编译器并不给普通const只读变量分配空间,而是将它们保存到符号表中,无需读写内存操作,程序执行效率也会提高。

2、修饰指针:

C语言中const修饰指针要特别注意,共有两种形式,一种是用来限定指向空间的值不能修改,另一种是限定指针不可更改。

int i = 5,j = 6;
int k=2;

const int * p1 = &i; //定义1
int * const p2 =&j; //定义2

在定义1中const限定的是*p1,即其指向的地址上的值不可改变,改变指向的地址上的值如*p1=20,错误;但可以改变p1指向的地址,p1=&k,此时p1指向k,正确。

在定义2中const限定的是指针p2,不能改变p2的指向,如p2=&k,此时将p2指向了k,错误;但其所指向地址上的值可以改变,如*p2=80,正常。

3、修饰函数参数:

const关键字修饰函数参数,对参数起限定作用,防止其在函数内部被修改。所限定的函数参数可以是普通变量,也可以是指针变量。

void fun1(const int i)
{
……

i++; //对i的值进行了修改,程序报错

……

}

sprintf()函数

sprintf函数的格式:int sprintf( char *buffer, const char *format [, argument,...] );
除了前两个参数固定外,可选参数可以是任意个。buffer是字符数组名;format是格式化字符串

sprintf函数的功能与printf函数的功能基本一样,只是它把结果输出到指定的字符串中了。

#include<stdio.h>
int main(int argc, char *avgv[])
{
char s[40]; 
sprintf(s,"%s%d%c","test",1,'2'); 
//第一个参数就是指向要写入的那个字符串的指针,剩下的就和printf()一样了

printf("%s%d%c","test",1,'2'); 
return 0;
}

使用sprintf()函数后,s数组就会存放"test12"字符串;使用printf()函数后,会向屏幕打印出 test12

sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。

sprintf的第一个参数是目的字符串,如果不指定这个参数,执行过程中出现 "该程序产生非法操作,即将被关闭...."的提示。

说明:在stm32使用液晶时,若要液晶屏显示代码中变量的内容,可以使用sprintf()函数,将变量值转化成ASCII码字符串,存放在字符数组中,进而可以利用液晶显示字符串函数显示数组内容即可。使用时需要包含头文件<stdio.h>。

猜你喜欢

转载自blog.csdn.net/Healer19/article/details/112249066