初识C语言(二)

一.字符串+转义字符+注释

1.字符串

#include<stdio.h>
int main()
{
    char arr1[] = "abc";
    char arr2[] = {'a', 'b', 'c'};
    char arr3[] = {'a', 'b', 'c', '\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0; 
}

打印的结果为

经过调试后arr[1]的结果为a b c \0

经过调试后arr[2]的结果为abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘟bc

经过调试后arr[3]的结果为a b c \0

arr[2]之所以会出现这种情况是因为字符串的结束没有\0,打印abc后出现烫烫是打印的随机值直到遇到\0才会停下来。

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

想求字符串的长度用strlen库函数,前提在前面应该加一个#include<string.h>

strlen是计算\0之前出现的字符的个数

arr1和arr3中有\0所以字符串的长度为3

arr2的长度之所以为35是因为是随机值,一个不确定的值,再次执行后,就不一定是35了,是因为\0的位置,直到遇到\0后才能算出它的字符串长度 。

2.转义字符

转义字符
释义
\?
在书写连续多个问号时使用,防止他们被解析成三字母词
\'
用于表示字符常量 '
\“
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a
警告字符,蜂鸣
\b
退格符
\f
进纸符
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\ddd
ddd 表示 1~3 个八进制的数字。 如: \130 X
\xdd
dd 表示 2 个十六进制数字。 如: \x30 0

还有%d        打印整型     

%c   打印字符   

  %s 打印字符串

如果只想打印双引号,应该是printf("%s","\"");

如果只想打印单引号,应该是printf("%c","\"");

3.注释

代码中有不需要的代码可以直接删除,也可以注释掉 。 代码中有些代码比较难懂,可以加一下注释文字

#include <stdio.h>
int Add(int x, int y) {
    return x+y; }
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));
    return 0; }

关键字static

一.static修饰局部变量 

在上述代码中,结果为什么是10 个6呢?

刚开始a被赋值为5,经过a++后a为6,打印出第一个6,因为i=0且小于10,所以i++,则i=1,再次返回函数test,因为a=5是局部变量,在运行void  test后,生命周期也就结束了,局部变量a就被销毁,当i=1;a还是被赋值为5,经过a++,a为6且被打印出来,循环下去,就是打印出10个6

 加上关键字static后,使变量a成静态局部变量,使静态局部变量a出了局部范围后不会被销毁,生命周期变长了,但作用域没有发生变化。下一次进入函数依旧存在,是因为:static修饰的局部变量存在静态区,a运行1次后为6,再次循环后,没有被销毁,所以a经过a++后,经打印为7,以此循环下去,结果是从6到15.

二.static修饰全局变量

sttatic2中想要用sttaic'3中的g_val的值,得用到一个关键字extern(用来声明外部符号)

 

 这样就成功了,这就相当于偷用sttaic3中的代码,那怎么能防止别人偷盗呢?

这时候就用到static  关键字了

 

 

 

 这时候就开始报错了,说明static修饰的全局变量使全局变量只能在内部使用。

全局变量本来就具有外部链接属性,但被static修饰后,外部链接属性变成内部属性,只能在自己的源文件内使用,不能被其他文件使用。相当于static用来防止其他文件来偷东西。

从感觉上显得作用域变小了!

用static修饰函数和用static修饰全局变量一样。

关键字#define  定义常量和宏

 #define+变量名(一般都是大写)+内容

当然不一定是整型,字符串也行

#define  定义宏

 

 就不用单独再写一个函数,直接用#define定义的宏

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J 2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值