|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 houqing1999 于 2023-5-25 17:33 编辑
//想问一下func2为什么要用const关键字,意义在哪
#include <stdio.h>
#include <stdlib.h>
int global_var1;
int global_var2;
static int file_static_var1; //另外这里的static和func1函数里面的static作用是不是不一样,如果一样,为什么
static int file_static_var2;
void func1(int func1_param1, int func1_param2)
{
static int func1_static_var1;
static int func1_static_var2;
// 输出行参的地址
printf("addr of func1_param1: %010p\n", &func1_param1);
printf("addr of func1_param2: %010p\n", &func1_param2);
// 输出静态局部变量的地址
printf("addr of func1_static_var1: %010p\n", &func1_static_var1);
printf("addr of func1_static_var2: %010p\n", &func1_static_var2);
}
void func2(const int func2_const_param1, const int func2_const_param2)
{
int func2_var1;
int func2_var2;
// 输出const参数的地址
printf("addr of func2_const_param1: %010p\n", &func2_const_param1);
printf("addr of func2_const_param2: %010p\n", &func2_const_param2);
// 输出局部变量的地址
printf("addr of func2_var1: %010p\n", &func2_var1);
printf("addr of func2_var2: %010p\n", &func2_var2);
}
int main(void)
{
char *string1 = "I love FishC.com";
char *string2 = "very much";
// 输出函数的地址
printf("addr of func1: %010p\n", func1);
printf("addr of func2: %010p\n", func2);
// 输出字符串常量的地址
printf("addr of string1: %010p\n", string1);
printf("addr of string2: %010p\n", string2);
// 输出全局变量的地址
printf("addr of global_var1: %010p\n", &global_var1);
printf("addr of global_var2: %010p\n", &global_var2);
// 输出文件内的static变量的地址
printf("addr of file_static_var1: %010p\n", &file_static_var1);
printf("addr of file_static_var2: %010p\n", &file_static_var2);
// 输出函数内局部变量的地址
func1(1, 2);
func2(3, 4);
return 0;
}
在这个程序中,`const`关键字用于修饰函数`func2`的参数,表示这些参数是只读的,不能被修改。这样做可以保证在函数内部不意外地修改这些参数值,保证代码的安全性和可靠性。
另外,`static`关键字在不同的作用域中具有不同的意义。在全局作用域中,它表示该变量只能在当前文件中使用,不能被其他文件引用。在局部作用域(函数内)中,它表示该变量是静态局部变量,即该变量不会被销毁,在函数执行完毕后仍然存在,并且下次调用该函数时其值还会保持上一次的结果。
有用请设置最佳答案
|
|