1. 变量
面试题:全局变量和局部变量区别:
|
局部变量 |
全局变量 | |
|
定义位置 |
在函数内部定义的变量 |
在函数外部定义的变量 |
|
存放位置 |
栈区 |
全局区 |
|
生命周期 |
仅在本函数内部 |
整个程序 |
|
作用域 |
仅在本函数内部 |
整个程序 |
|
初值 |
未赋初值,初值为随机值 |
未赋初值,初值为0 |
2. 常量
2.1. 概念
在程序运行期间其值不发生变化的量
2.2. 分类
整型常量:十进制、八进制等整型数值
int \short\long
字符常量:用单引号引起来的一个字符
char类型
'a' '\0' '\n' ' '
字符串常量:用双引号引起来的一串字符
字符数组存储,字符串以\0作为结束标志
"hello" "abc" "a"
sizeof("hello") //6
浮点常量:小数
float/double
指数常量:指数表示
2*10^3 -> 2e3 3*10^-5 -> 3e-5
标识常量:用符号进行标识一个常量
宏定义
格式:#define 宏名 常量或表达式
特点:原样替换(不要直接计算结果,表达式是什么就直接替换)
一般宏名大写,和其他变量区分

X*X/X*X= 2+1*2+1/2+1*2+1=7
a=a/7=1
练习:写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个;(富士安全,广域科技,华辰泰尔,鲁科安全,神戎电子,中安云科,中维世纪,晟安信息,苏州特点电子科技)
#include <stdio.h>
#define MIN(a, b) (a < b ? a : b)
int main(int argc, char const *argv[])
{
printf("%d\n", MIN(5, 4));
return 0;
}
3. 输入输出函数
学习一个函数需要考虑三要素:功能、参数、返回值
3.1. 标准输入输出
3.1.1. 输出函数printf
int printf(const char *format, ...);
功能:按照指定的格式向终端输出数据
参数:format:输出数据的格式,传递字符串
%d - int
%ld - long
%c - char
%f - float
%lf - double
%s - 字符串
%p - 地址
%e - 指数
%#x - 十六进制
%#o - 八进制
%u - 无符号数
...:不定参的函数
返回值:正确输出数据的个数
注意:
1. 如果是有符号数用%u打印,会默认将有符号转为无符号,最高位不在表示符号位,而是实际的数据位
2. %-m.nf,m代表是位宽,n小数点后的位数,-代表是左对齐,默认是右对齐
如果m<实际数据的宽度,按照实际宽度输出
如果m>实际数据宽度,默认在左侧补空格

参考代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int num = 100;
float ch = 2e3;
printf("%d\n", num);
printf("%#o\n", num);//八进制
printf("%#x\n", num);//十六进制
printf("%e\n", ch);//打印指数
return 0;
}
3.1.2. 输入函数scanf
int scanf(const char *format, ...);
功能:按照指定格式从终端输入数据
参数:format:传字符串,同printf
...:地址,对变量取地址,&
返回值:正确输入数据的个数
注意:
scanf输入数据时,第一个参数是字符串,指定输入数据的格式,其中不能包含\n或其他任意字符;其余的参数要传递地址。
参考代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
//1.输入一个数据
int num;
scanf("%d", &num);//&num:变量的地址
printf("%d\n", num);
//2.一次输入多个相同类型的数据
// int num, sum, var;
// scanf("%d %d %d", &num, &sum, &var);//&num:变量的地址
// printf("%d %d %d\n", num);
//3.一次输入多个不同类型的数据
int num;
char ch;
float var;
//当scanf中需要输入字符时,格式之间用空格隔开,可以将一个或多个空格、tab、回车进行回收
scanf("%d %c %f", &num, &ch, &var);
// 当scanf指定格式时,输入数据时按scanf中指定的格式进行输入数据
// scanf("%d-%c-%f", &num, &ch, &var);
printf("%d %c %f\n", num, ch, var);
char a, b, c;
//此时scanf中空格起到垃圾字符回收的作用
scanf("%c %c %c", &a, &b, &c);
printf("%c %c %c\n", a, b, c);
return 0;
}
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/wochaonilvlvlvlv/article/details/147050178



