C语言总结_02

11.const:
(1)const定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,const 和变量类型 int 可以互换位置,二者是等价的:

const  int  a = 10;    
int  const  a = 10;
const char *p; // 声明一个指向字符常量的指针,p所指向的内容不可以被修改
char const *p;// 同上
char * const p;//声明一个指向字符或字符串的指针常量,p的值不可以被修改

(2)用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值。如果定义的时候未初始化,对于未初始化的局部变量,程序在执行的时候会自动把一个很小的负数存放进去。这样后面再给它赋初值的话就是“改变它的值”了,即发生语法错误。

(3)用 const 修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程。全局变量的生存周期为程序运行的整个过程这个是理所当然的。而使用 const 修饰过的局部变量就有了静态特性,它的生存周期也是程序运行的整个过程。我们知道全局变量是静态的,静态的生存周期就是程序运行的整个过程。但是用const修饰过的局部变量只是有了静态特性,并没有说它变成了静态变量。

(4)数组的长度不能是变量。虽然 const 定义的是只读变量,就相当于是定义一个常量。但是只读变量也是变量,所以 const 定义的变量仍然不能作为数组的长度。但是需要注意的是,在 C++ 中可以。C++ 扩展了 const 的含义,在 C++ 中用 const 定义的变量也可作为数组的长度。

12.static:
(1)普通局部变量存储于进程栈空间,使用完毕会立即释放。而用static修饰的局部变量存储在进程的全局数据区,即使函数返回,它的值也会保持不变。延长了该局部变量的生命周期,但是作用域没有改变。

(2)static修饰的全局变量,改变了它的作用域,即只能在自己所在的源文件内部使用。

(3)static修饰的函数,改变了它的链接属性,即只能在自己所在的源文件内部使用。

(4)全局变量(包括有static前缀的)未初始化, 默认值是0。

(5)局部变量未初始化,默认值为随机值(如果要输出编译器会报错)。除了加static 前缀的局部变量,因为此时的局部变量是放在静态存储区内的,跟全局变量一样。

13.%p:以十六进制整数方式输出指针的值(是一个地址)

printf(%p\n”,&a);    //打印a的地址,假如为0x00B5F82C
printf(%d\n”,&a);    //以十进制方式打印a的地址,对应为11925548

14.指针大小:int*、char*、float*…在32位平台均为4byte,在64位平台均为8byte。

int a[10]={0};
char b[10]={0};
void length(int arr[])  //参数传递的是数组首元素的地址
{    
	sizeof(arr);      //长度为4 byte
}
void length_1(char b[])
{
	sizeof(b);      //长度也为4 byte
}

15.ch=getchar() != EOF; EOF——输入Ctrl+Z

16.’\n’的ASCII码值为10。

17.在输入字符串时,如果是连续的字符串(中间没有空格),则可以使用scanf()和gets();如果输入的字符串带空格,则只能用gets()。例如要输入:gone with the wind,用scanf()输入的话就只能得到第一个空格前面的字符gone。

18.循环0次:
在这里插入图片描述
19.”==”不能用来判断字符串是否相等。

20.函数:当实参传递给形参时,形参只是实参的一份临时拷贝(形参也拥有了自己的空间),对形参的修改是不会改变实参的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值