网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月05日漏签0天
c语言吧 关注:801,836贴子:4,375,884
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 首页 上一页 1 2 3 4 5 6 7 下一页 尾页
  • 256回复贴,共7页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

回复:【入门贴】老是有人问我看什么书。c与指针。来一起看~~~

  • 只看楼主
  • 收藏

  • 回复
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 传承_冰冷的心
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


2026-02-05 17:53:19
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
变量a,b,c,存储类型为静态。他们在程序之前创建,知道程序结束。当程序开始执行的时候,变量a初始化为5.这些变量的作用域一直延伸到这个源文件结束为止。第6行和第12行的a,b在那部分程序中将隐藏同名的静态变量。因此这个变量的作用域为a:1~12,17~29.b:2~6,25~29 c:3~29
第4行声明了2个标识符。d的作用域从第4行直到文件结束。函数d的定义对于这个源文件中任何以后想要调用它的函数起到了函数原型的作用。作为函数名,d在缺省情况下具有external链接属性,所以其他源文件只要在文件上存在d的原型,就可以调用d。如果声明为static就可以把它的链接属性从external改为internal。但这样将使其他源文件不能访问这个函数。对于函数而言,存储类型不是问题。因为代码总是存储在静态内存中。
参数e不具有连接属性,所以为们只能从函数内部通过名字访问它。它具有自动存储类型,所以它在函数调用时创建,当函数返回时消失。由于局部变量冲突,它的作用域于第5到11行。第16到18行,以及22到23行。
第5到7行声明局部变量。所以他们的作用域到函数结束为止。他们不具有链接属性,所以他们不能在函数被调用时,它通过隐式赋值被初始化15.b的类型是寄存器类型。他的初始值是垃圾。g是静态,他会在程序的整个执行过程中一直存在。当程序开始执行的时候,它被初始化为20.当函数每次被调用的时候,它并不会被重新初始化。
第8行声明基本不用。
第11行和12行为代码声明局部变量。他们都具有自动存储类型,不具有链接属性,他们的作用域延伸到第16行。这些变量和先前声明声明的a和c不同。而且由于名字冲突,以前声明的变量是不能北访问的。
第13行使全局变量h在这个代码块内可以被访问。它具有external链接属性,存储于静态内存中,这个唯一一个必须是用使用extern的声明。如果没有h就是一个局部变量。
第18行和19行用于创建局部变量(自动无连接作用域与本代码快)。这个e和参数e是不同变量。他和第11行的e也不同。这个代码块中从10行到17行并没有嵌套,所以编译器可以使用相同内存来存储这两个代码块中不同的变量e。如果你想要让这两个代码快中的e表示同一个变量,那么这个e就不应该是局部变量。
最后,24行声明了函数i,它具有静态链接属性,静态链接属性可以放置它背着个源文件之外的任何函数调用。函数d不可以调用i,因为d不存在i的原型。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
语句
我擦擦,竟然都开始写看语句了。
一个程序都没有写呢呢。不用着急,语句里面的程序基本写不完啊,写不完。
做这个之前,我先说,写程序的时候缩进和注释一点都不能少。于是乎开始吧。
空语句
c最简单的语句就是空语句,它本身仅仅包含一个分号。空语句本身并不执行任何任务。但是有时候哪怕是空语句也要写一条。
表达式语句
c中并不存在专门的赋值语句。c中的赋值就是一种操作。好比是加减乘除。在表达式后面加上分号就是表达式语句。并不一定要有等号才是表达式语句。这样也可以,而且挺常用的。Y+3;getchar();
代码块
代码块就是对于一对花括号之内的可选声明和语句列表。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
If语句
if语句的语法
if(expression){
staement
}else statement
解释:expression就是一个逻辑判断。他的值是真的就会执行花括号中间的代码块,为假会执行else后面的代码块。
由于c不存在bool类型(布尔类型,这个类型的值有两个,真和假)而是用整型来代替。这样expression可以是任何能够产生整型结果的表达式——0是假,1是真。
来个例子

这个例子中if中的判断好像是一样的。都是x<3的值,实际上却是一个陷阱。下一章说。
if可以嵌套。比如说
if(){}else if(){}else if(){}else{}.(没有缩进很蛋疼吧~~)
然后就是else靠近与离他最近的不完整的if语句。如果你按照正常的缩进敲代码的话,应该能够看出来else是那一个if的。
While语句
c的while语句的语法。
while(expression){statement}
这个里面的expression和if一样。 如果expression为假,会跳过statemen,如果expression是真会执行statement。会循环的说。
Break和continue语句
在while中可以使用break语句用来中止循环。执行完之后,会执行while整个语句之后的语句。
continue语句用来中止当前循环,然后执行下次循环。当前在执行下次循环之前,会检测下次循环是否会执行。
这两个只对内层循环起作用,你没有办法使用break和continue语句影响外层的循环。
While语句的执行过程
来个图:


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 1017834910
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好深奥,略微的看了一点,算是有点新的了解了把


  • 砂锅砍砂锅
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
←。← 后排围观。。。


2026-02-05 17:47:19
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Switch
语法:switch (expression) statement
具体写法是这样的:
switch(expression){
case constant_exptession :statement
case constant_exptession :statement
}
每个case的标签必须具有一个唯一的值。常量表达式(constant-exptession)是指在编译器渐进性的求值的表达式的,他不能使任何变量。
执行过程中先计算expression的值然后匹配到case中cosntant-exptession的值,这个之后的语句都会被执行。也就是说case仅仅是语句执行的切入点。所以它经常和break连用。
所以一般是这样写的
switch(command){
case “a”:add_entry();break;
case “b”:add_entry();break;
case “c”:add_entry();break;
case “b”:add_entry();break;
case “e”:add_entry();break;
}
break语句的实际效果就是把语句列表划分为不同的部分,这样switch语句就能够看到更加传统的方式工作。
当然多个case可以连用。(最后给出例子。)
default子句
如果所有的值和exptession都不匹配这个时候就绪要default子句。(当你可以确定exptession个数的时候你可以将某一中情况断定为default,然后少写一个case。这种方法是偷懒了,看着方便。但是我不推荐。因为这样程序报错的时候不容易划分。Default子句设定的目的是为了检测非法值的。)
switch语句的执行过程(不要认为所有的switch都要break)
计算程序输入中字符,单词和行的个数。每个字符都比需技术,但是字符和制表符号同时也做为单词的终止符号使用。也就是说,但出现换行时三个计数器都必须增加。
switch(ch){
case '\n':lines+=1;
case '\t' :
case ' ':words+=1;
default: char+=1;
}这个例子的bug就是连续的空格没有办法识别。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Goto
语法什么的:goto 语句标签
要使用goto先要在希望跳转的语句前面加上标签。语句标签就是标识符后面加个冒号。包含这些标签的goto语句可以出现在统一个函数中的人位置。
goto是一个恨危险的语句,在学习过程中,很容易产生对于它的依赖。(基本上没有什么用的语句,一定不要用就是了。它可以做的其他都可以做到,而且简单。)
在使用循环嵌套的时候有时候需要使用goto跳出整个循环体,这个时候就需要使用goto。
Eg:while(){
while(){
while(){
while(){
if(){}
goto quit;
}
}
}
}
quit: 终于出来了;
其实这个东西完全不用这样。这么长的语句一般都需要做成一个独立的函数,然后在goto的位置写个return就可以了。
个人认为:
不使用goto的原因:
1、将整个程序的逻辑结构摧毁的很彻底。
2、goto容易将编程是的顺序搞得很混乱。
3、起变量名字、函数名字和文件名字就已经很蛋疼了,现在你告诉我还有个标签名字?


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
总结1
c中的很多语句的行为和其他语言中的类似语句很想相似。(作为一只从java过来的孩子表示这个东西很淡疼。)if和while语句并不具有布尔类型,所以他们的测试值都是整型表达式。(新手可以直接用数值,入门可以在开始写个define,高手可以写个结构体,牛人貌似会自己定义个bool类型。)for语句是while循环的一种常用组合方式。dowhile和while很类似,不过dowhile会先执行一次之后在判断。尽量不要使用goto语句。
switch、case和break以及continue。
当需要出现一条语句但并不需要执行任何任务的时候,可以使用空语句。
然后就是c不存在任何的输入输出语句,以及异常处理语句。
总结 2
编写不会产生任何结果的表达式。
确信在if语句中的语句列表前后加上大括号。
在switch语句中,执行流意外的从一个case顺延到下一个case。
总结 3
在一个没有循环体的循环中,用一个分号表示空语句,并让它独占一行。
for循环的可读性比while循环强,因为它把控制循环的表达式收集起来放在一个地方。
在每个switch语句中都是用default语句。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
操作符和表达式
操作符
算数操作符 + - * / %
除了%(取模)之外,其余的几个操作符都是既使用与浮点类型又适用证书类型。但操作符的两个操作数都是整数是,它执行整除操作。在其他情况下则执行浮点数除法。%为取模操作符,它接受两个整型操作数,它把左边的操作数除以右边的操作数,但他的返回值是余数。
移位操作符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
移位操作存在两种情况。逻辑移位以及数学移位。


  • 418197946
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
留名


  • 抗晓昕0In
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
照书抄吗?


2026-02-05 17:41:19
广告
不感兴趣
开通SVIP免广告
  • 住满阳光
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哦啦啦啦,准备入坑


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 2 3 4 5 6 7 下一页 尾页
  • 256回复贴,共7页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示