c语言 static C语言static用法
2024-11-10 09:55 - 立有生活网
C语言static declaration of 'integ' follows non-static declaration
内部变量表;程序的第8行float i,少了个i,函数声明都搞错了,肯定报错了
c语言 static C语言static用法
c语言 static C语言static用法
a[3] = {1, 2, 3};
第8行:double integ(float i,double(fun)(double));
你的fun是个什么东西?
C语言初始化数组时,一定要使用静态存储吗?
2)变量只被引用而不改变其值。其次,在C语言中,数组归于布局数据类型。一个数组能够分化为多个数组元素,这些数组元素能够是根本数据类型或是布局类型。因而按数组元素的类型不一样,数组又可分为数值数组、字符数组、指针数组、布局数组等各种种类。
定义时初始化应该写成
int a[]={1,2,3}
C++里是这样的,至于C我就不清楚了.
当然不行,a[3]={1,2,3}是什么句子啊!!!a又不是二维数组.
如:
int a[] = {1, 2, 3};
static int b[3] = { 1, 2};
任何
int astatic int a[] = {1,2,3};[3];
static int b[3];
b[3] = {1, 2, 3};
没有在定义时初始化都是错误的!
不管是什么变量都应该先定义后赋值
static和extern和定义数据无关,只和变量的使用范围有关,static静态全局变量的使用范围是当前文件,extern是文件间的访问。
int b[] = {1,2,3};
void main()
{int i = a[0]; // 这时候i = 1
int k = b[0]; // 这个时候 k != 1
}建议不要看谭浩强的书,这里有本书,Bjarne Stroustrup - The C++ Programming Language
看就看写的。
C语言用static处理输出1到5的阶乘.
3、定义一个c源文件函数时,加static表示该函数是本源文件私有,其它源文件不能使用。次调用时,f的初始值为1。f=11=1,返回1。
第二次调用时,f的初始值为1。f=12=2,返回2。
第三次调用时,f的初始值为2。f=23=6,返回6。
第四次调用时,f的初始值为6。f=64=24,返回24。
每一次调用时,调用函数3)修饰全局变量时表示此变量对文件外的代码不可见中n的值是从
printf("%d!=%dn",i,fact(i));
里 i 的值过来的。
C语言的变量根据分配的存储空间的不同 可以分为哪三种变量?
,static,即在程序运行的过程中静态变量始终是占用一个存储空间。这个依照你的变量或者对象的申明位置和方式不同而不同的。
一般来说,全局变量,静态变量,首先分配,分配在静态存储空间。
局部变量,在申明的是后分配,分配在栈上。作用域结束后系统会自动回收。
动态申请的空间,在执行分配函数时分配,分配在堆上,又程序员自己写释放代码手动释放空间。
栈变量、堆变量、(p[0] +1 ) = ( (p+0) + 1) = (a+3 +1) = a[4] = 1静态变量
C语言中,定义static char P指针,和定义char P指针,有什么本质的不同,是指向元素动态和静态吗?谢谢
int这样定义要看你的定义在什么地return 0;方。
static 有两种作用:
2.局部的:就是你所的静态。
static,若声明一个静态的局部变量的。若希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。这时就应该指定局部变量为静态局部变量。
若声明的是一个静态的全局变量,则会禁止其它文件访问该全部变量,进行对该全局变量的保护,跟extern相对的。
而char p只是一个普通的指针声明。
c语言 数组的定义 加上static 和不加 有什么区别呢?
数组在定义时并没有强制要求要初始化,可以需要时再赋值c语言中static关键字有两个作用,一是文件作用域,二是函数作用域。
一、文件作用域
文件作用域关键字static的作用是,以static申明的全局变量、函数不得被其他文件所引用,例如:
//这是mystr.c文件的内容
#include
static int num = 10;
int mynum = 100;
stat无论是静态,局部还是全局数组只有在定义时才能初始话,否则必须通过其它方法,如循环作实现。ic int str_len(char str)
{return strlen(str);
}int mystr_len(char str)
{return str_len(str) + num;
}当你mystr.c文件中的str_len函数加上了static关键字,你便不能在其他的地方复用这个函数,譬如,你不能这样写:
#include
int main()
{int len;
printf("%d %dn", num, len )
}gcc main.c mystr_len.c
将不能编译通过,因为mystr.c中的num变量和str_len函数都用了static关键字,导致他们只能在mystr.c中被使用,如文件中的mystr_len函数可以引用num变量和str_len函数。
#include
int main()
{int len;
len = mystr_len("hello, worldn");
printf("%d %dn", my_num, len )
}当不用static关键字时,等同于extern,即
int mystr_len(char str)
{return str_len(str) + num;
}和
extern int mystr_len(char str)
{return str_len(str) + num;
}是一样的。
二、函数作用域
static另外一个用途是函数内部静态变量,最常用的情况是
int test()
int ptr = #
return ptr;
{printf("%dn", test);
}该函数返回整数num的指针,在main函数中打印test将会出现段错误,因为num做为test函数内部,只能在test内部被访问。以下程序是正确的。
int test()
{static int num = 100;
int ptr = #
return ptr;
{printf("%dn", test);
}该程序中num变量加了关键字static,函数运行结束后,依然可以在其他地方被引用,只是不能直接通过变量名访问,而要间接通过指针访问,原因是 static变量存储在全局数据段中而不是函数栈中。读者可以将它看作特殊的全局变量,只是其他地方只能通过指针来访问,而不能直接通过变量名访问。
static在C语言中可以声明变量吗?
数据类型可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。
先说静态局部变量:通常情况下,在一个函数中定义一个变量,那么函数退出之后,这个变量就消失了,即使你第二次调用这个函数,里面的变量也会被重新赋初值。比如我们写一个函数:
int fun(int a)
你的先弄明白头文件被包含了之后,编译器会在当前文件把你包含的头文件展开,而当多于两个源文件包含相同的头文件的时候,如果不加staic的话,头文件中的同一个函数就相当于在整个程序中被定义了多次,所以肯定会报错。static会把它定义为本地函数,将其作用域限制在本文件内,所以需要加上static关键字。{int sum;
sum=sum+a;
return sum;}
这样无论你是第几次调用fun这个函数,sum都会重新被赋初值,也就是函数的返回值一直会是a;而不会出现多次调用累加的情况。
但如果你在一个函数中,用static来声明变量,那么这个变量虽然在函数外部不可用,但退出函数时,这个变量是不会消失的,下一次再调用这个函数,里面的值仍然存在。就说上面这个函数,如果你的句写成static int sum;那么你次调用fun(3);函数返回3,第二次再调用fun(5);函数返回值是8,因为次调用之后的sum=3的值不会消失。
另一种是静态全局变量。因为是全局变量,不存在退出函数消不消失的问题。所以静态全局变量和普通全局变量的区别是:普通全局变量在其他源文件中可以通过extern全局变量名的声明,来使用该变量,而静态全局变量只能在变量所在的文件中使用,即使你在其他文件中使用extern声明也不可以使用,这样可以有效避免不同文件全局变量的冲突。
c语言自己写的头文件里面的函数定义为什么要加static?
如果不加stp[0] ===> &a[3]atic的话,可以用宏定义的{int num = 100;方式实现的,然后在每个文件中使用#ifdef和#ifndef以及#endif~
C语言中多用static好吗?
第五次调用时,f的初始值为24。f=245=120,返回120。static 的变量的生命周期是直到你的.c文件代码结束,空间才会被回收的,如果使用过多,会使得变量一直增多,一般不建议过多使用
1、定义在某个函数内部的,这个变量}int main()相当于全局变量,退出函数时不会释放内存,进入函数时变量值保存;
2、定义一个c源文件全局变量时,加static表示该变量是本源文件私有,其它源文件不能使用;
从以上定义,很明显第2、3两点的应用是非常有必要的,也是模块化编程的必然。
看需要而用,如某个变量在你的子程序中多次调用需要记忆上次的值就需要用。
某个文件内的函数或全部变量不想被外部调用使用,需要用,防止被以外使用。
同意一楼,用多了不好
小升初语文必考知识点 小升初语文必考知识点
大家好,今日小华来为大家解答以上的问题。小升初语文必考知识点,小升初语文必考知识点归纳很多人还不知道,现在让我们一起来看看吧! 小升初语文必考知识点 小升初语文必考知识点归纳···
教师资格报名_教师资格报名号怎么查
中小学教师资格怎么报考? 原则上应具备《教师法》规定的相应学历条件,并应符合本省确定并公布的学历要求。 【学习形式选(三)初级中学。择】 教师资格报名_教师资格报名号怎么查 教师资···
oppo手机关机键失灵小窍门 oppo a1关机键失灵
oppo手机屏幕失灵无法关机 本回答适用于所有OPPO机型。 问题描述 oppo手机关机键失灵小窍门 oppo a1关机键失灵 oppo手机关机键失灵小窍门 oppo a1关机键失灵 长按电3、若是运行某程序时,无法使用返回···