define定义的是静态变量吗(c语言问题求详解不要只有答案)

本文目录
- c语言问题求详解不要只有答案
- 在C语言中define是不是关键字
- 这个c++的程序到底是怎么回事儿啊谁能解释一下,最好详细点儿,急用!!
- php - $GLOBALS,const,define,static
- 如何宏定义一个字符串变量
- C语言中的#define与typedef有和区别;static与extern定义有和区别
c语言问题求详解不要只有答案
第1题 b
a选项,例:
void f()
{
int i;
...
...
...
...
}
int j;
int main()
{
return 0;
}
很明显 全局变量j的作用域仅限于main函数
局部变量i作用域为f函数,但main函数中未使用j,
实际上j的作用域为无。
c选项 函数的形参都是局部变量
d选项 auto变量只有调用的时候才赋值,调用结束就释放,所以无初值
static变量是静态变量,程序启动时就在全局区分配了空间,
而且被初始化为0或者空(NULL)
第2题 结果是 7
#define MAX(x,y) (x)》(y)?(x):(y)
宏定义,编译的时候是直接替换,
t=MAX(5+2,3+3)*10等效于
t=(5+2)》(3+3)?(5+2):(3+3)*10
=》 t=7》6?7:60
结果为 7
第3题 结果是 4
int m=10; 定义全局变量m;
int m=5; 定义了一个局部变量m,作用域仅在f函数内部
两个m变量地址不同,互不干涉,所以f(6,7)的结果是47,
47/10 的结果取整为4。
第4题 结果是 579
static int c=3;定义的是一个静态变量,
它仅在声明时被首次初始化,即以后的函数
调用不再进行初始化,
第一次循环f(0)中c的值为4,a+b+c等效于0+1+4=5;
第二次循环f(1) 中c的值为5,a+b+c等效于1+1+5=7;
第三次循环f(2) 中c的值为6,a+b+c等效于2+1+6=9;
第5题 结果是 2
#define SELECT(a,b) a《b?a:b
宏定义,编译的时候是直接替换,
printf(“%d\n”,SELECT(2,4))等效于
printf(“%d\n”,2《4?2:4);其结果为 2.
在C语言中define是不是关键字
在C语言中define不是关键字。define是编译器的预编译指令,是编译器实现的,不是C语言的内容。
C语言中的关键字及意义如下:
auto 局部变量(自动储存)
break无条件退出程序最内层循环
case switch语句中选择项
char单字节整型数据
const定义不可更改的常量值
continue中断本次循环,并转向下一次循环
default switch语句中的默认选择项
do 用于构成do.....while循环语句
double定义双精度浮点型数据
else构成if.....else选择程序结构
enum枚举
extern在其它程序模块中说明了全局变量
float定义单精度浮点型数据
for构成for循环语句
goto构成goto转移结构
if构成if....else选择结构
int基本整型数据
long长整型数据
registerCPU内部寄存的变量
return用于返回函数的返回值
short短整型数据
signed有符号数
sizoef计算表达式或数据类型的占用字节数
static定义静态变量
struct定义结构类型数据
switch构成switch选择结构
typedef重新定义数据类型
union联合类型数据
unsigned定义无符号数据
void定义无类型数据
volatile该变量在程序中执行中可被隐含地改变
while用于构成do...while或while循环结构
这个c++的程序到底是怎么回事儿啊谁能解释一下,最好详细点儿,急用!!
#define N 100
#define S 1
#define M 10
声明常量 N=100 S=1 M =10 都为常量
int p,n,s,m; 定义静态变量
void main()
{
m=M;n=N;s=S;
Josegh();
WriteDat();
}
主程序的执行过程是,初始化静态变量 m=10;n=100;s=1
接着调用函数Josegh()进行逻辑计算
然后调用函数WriteDat()以写的方式打开 OUT.DAT文件,写入数组p中的数据。
所调用的逻辑计算函数Josegh()看起来有点麻烦,耐心点看,还是比较简单的
php - $GLOBALS,const,define,static
$GLOBALS 不定义变量,只是说明某变量是全局变量,那个变量是其它地方定义了的。如果在函数里面不使用$GLOBALS什么的变量都是局部变量,只有本函数内有效。
define定义的常量其实也没有定义变量(分配内存),这个东西类似C语言的#define、PASCAL语言的const,本质上是宏。
static定义的静态变量和PASCAL语言的静态变量概念意义,本质是局部变量,但是不在栈里面分配,也就是每次调用这个子程序的时候,变量的值是相同的。普通的局部变量是分配在栈里面的,每次访问子程序都是新分配的内存。
const只在类里面使用。
如何宏定义一个字符串变量
string str = "abc";//申明一个变量str
#define STR str#define STR(s) #s
CString str = STR(abc);
C语言中的#define与typedef有和区别;static与extern定义有和区别
1) typedef与#define的区别
从以上的概念便也能基本清楚,typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量
,到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。有时很容易搞不清楚与typedef两者到底该用哪个好,如#define
INT int这样的语句,用typedef一样可以完成,用哪个好呢?我主张用typedef,因为在早期的许多C编译器中这条语句是非法的,只是现今的
编译器又做了扩充。为了尽可能地兼容,一般都遵循#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字、冗
长的类型的别名。
宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变
量的功能。请看上面第一大点代码的第三行:
typedef (int*) pINT;
以及下面这行:
#define pINT2 int*
效果相同?实则不同!实践中见差别:pINT a,b;的效果同int *a; int *b;表示定义了两个整型指针变量。而pINT2 a,b;的效果同int *a, b;
表示定义了一个整型指针变量a和整型变量b。
注意:两者还有一个行尾;号的区别哦!
2)static和extern的区别
extern int a;
说明 a 是在另外一个文件中定义的变量
这是声明,不是定义。
static int a;
定义静态变量 a.
两者的作用域不一样

更多文章:
线程池内中断某个线程(如何终止 android线程池中的任务)
2026年1月7日 07:15
为什么mysql没有bin目录(我在windows7下面安装mysql怎么会没有bin目录呢)
2026年2月7日 02:30
进程管理器端口(win7系统怎么查看端口被哪个进程占用情况呢)
2026年4月9日 11:45
translate的用法及其词组(英语Arrival Site怎么翻译)
2026年7月16日 00:00
grassland(grassland怎么读 英语grassland怎么读)
2025年12月10日 09:45
elementui和bootstrap 哪个好(学习bootstrap还是vue好)
2026年4月1日 10:45
下载jquery最新版本教程(怎么引用bootstrap轮播图)
2026年8月26日 01:45
二次分式怎么求值域(如果是二次分式函数,那么应该怎么求值域)
2026年9月18日 04:30
手机上怎么显示html图片(html格式的图片在手机上怎么能打开)
2026年8月9日 01:30
js的replaceall(js 怎么替换不了 | 这个符号)
2026年9月16日 13:00
安卓activity软件(activity(Android组件中最重要的四大组件之一)详细资料大全)
2026年7月30日 07:00














