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

 
 
 
日一二三四五六
       
       
       
       
       
       

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

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

本吧签到人数:0

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

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

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

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

  • 取消只看楼主
  • 收藏

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

惯例,大神镇楼。这位大神和c没什么关系。但是做的东西却对于c乃至计算机有重大影响~~~至今俺的编辑器还是他做的...


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
等下,我先回去拿书.....


2026-02-05 13:42:14
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
对新手说的...
别指望看了这个帖子能怎么样,c语言高深莫测。别搞什么vs2010,vc6.0,新手先学会语法再说,就用网络编译器。
@我叫蟹老板丿 @501343056 @ncdz9292 @日月晨曦life @Sunny碎碎de念 @卜丁艹挚爱风速
懒的不想艾特了....
你们觉得有错的地方说出来...我也是初学者不一定对。让吐槽来的更猛烈些~~~


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
对大神说的
希望指出我的错误....我原先学java的,很多想法很怪异...
@砂锅砍砂锅 @小_埃 @stillalex


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前言
跳过去,先看语法。说深的也看不出懂。别在这个帖子发问题。有个教学贴。
1.记住编辑器和编译器不一样。
2.c语言程序形成的过程。 源代码—>编译文件—>连接文件—>可执行程序。
3.预处理命令
包含c语言的标准库文件用<>例如include<stdio.h> 用自己的文件用"" 例如include"自己的文件.h" 剩下的以后说
4.主函数 统一先写成int main(void)
5.变量和函数名定义 用英文,不会英文用拼音,除非就用一两次,否则别出现abcdefg...
以上是简单程序的默认规定。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基本概念(一)环境
在ANSIC的任何一种实现中,存在两种不同的环境。一种是翻译环境,一种是执行环境。
这两个东西可以不再一台电脑上面,甚至于是不同电脑的不同操作系统上面。
翻译:
翻译阶段就是组成一个程序的源文件通过编译过程分别转换为目标代码。然后各个目标文件有链接器捆绑在一起形成一个完整的可执行程序。
编译过程本身也有几个阶段组成。预处理~~这个会在预处理器上执行一些文本操作。就是将一些数值定义为固定的东西。(宏定义)得到要使用的文件,或者说是库。(include)
然后就是解析,就是判断源代码的语句的意思。这个时候会返回大量的语法错误和警告。虽然警告可以忽略,但最好不要。随后就会产生目标代码。这个是机器指令的初步形式,用于实现程序的语句。有时候会优化的哦~~然后就是编译。
编译和链接。编译之后产生的文件是编译文件。dos系统中是.obj,unix中是.o~~
链接就是将多个编译文件链接在一起。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
执行
程序的执行过程也有很多个阶段。首先,程序要存入内存中。在操作系统中,这个任务有操作系统完成。那些不是存储在对战中的尚未初始化的变量将在这个时候得到初始值。在独立的环境中,程序的载入必须有手工安排。也可能是自己写个代码搞定。
接着,程序开始执行。在操作系统中,有一个启动程序于程序连接在一起,负责梳理一定日常事务,如收集命令行参数,接着就会调用main函数。(所以一个程序只能有并且必须有一个main函数。)
然后开始执行程序代码,程序将使用一个运行时的对战,他用于存储函数的局部变量和返回地址。这个也可是使用静态(static)内存。这个值会一直存在,直到用户释放。
然后就只终止程序。 正常是main返回一个值。(这就是int main(void))。
特殊情况比较多。一般是中断,和操作系统联系紧密,不说了。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基本概念(二) 词法规则
词法规则好比是中文里面的成语。是什么就是什么,规则不能改。这个决定了源程序中的独立片段,比如一个表达式,这个称之为标记(token)
一个ANSIC程序由声明和函数组成。(可以理解为数据结构和算法)函数定了需要执行的工作,而声名则描述了函数和函数将要操作的数据类型。注释什么的随便写,关键是要要让别人看懂。(程序不是写给你自己看的,是写给计算机和比人看的。何况,自己看的时候看不懂挫败刚更强)。
字符
标准c语言没有规定c环境必须使用哪种特定的字符集,但是他规定字符集必须包括英语所有的大小写字母和数字0到0.以及!" $ % ' ( ) * + , . / : ; < > ? [ ] \ ^ { } | ~
换行符,用于标识源代码每一行的结束。
标准c语言还定义了几个三字母词。这个是指几个字符的序列合起来表示另一字符。(我也不知道这个蛋疼的定义是做什么用的。我就不列出来了,想知道的百度)
然后就是转义字符或者说是转义序列。
前几天有人问我说linux上面不能识别\a。这个就是由于,linux上面gcc不知支持这些转义字符。主要是\a.其余的还好点。
建议转义字符也去百度。这些都是基础的要知道的,可以不会背,但是要知道有。


2026-02-05 13:36:14
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
注释
注释/*开始 */结束。注释不能嵌套,就是注释之中不能包含注释。具体解释在《c的陷阱与缺陷》中有。编译的时候,注释会被用空格代替,所以凡是可以出现空格的地方都可以写注释。
自由行使的源代码
c是一种自由形式的语言。没有什么规则规定什么地方必须写什么。(谭书里面死板套路就有点蛋疼。不过适合新手) 至于到底怎么写,就按照书上的代码写就行。不同的人习惯不一样,但都是以易读,简洁,美观为主。
标示符
标示符就是变量,函数、类型的名字。他们由大小写字母,数字和下划线组成,不能数字开头。大小写不一样。标准c语言,编译器会忽略31个字符以后的字符。就是说你不要起名字超过31个字符。 同时允许编译器对于表示外部的名字做限制。外部的名字就是其他文件中的名字。 最后就是保留字,起名字肯定不能用auto,main,int,if。。。。保留字要想知道全的话,百度吧。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序的形式
一个C程序可能保存于一个或多个源文件中,虽然一个源文件可一个包含超过一个的函数,但是每个函数都必须完整的出现于同一个源文件中。
就是说一个c程序可以被其他c程序调用,一个源文件可以有多个函数,但是每一个函数都要完整的出现在一个源文件。 说不清楚,不理解先留着。不做c语言的多文件编程,用不到。
程序风格
1、空行用于不同的逻辑代码段。 一般是两个函数之间会空一行,预处理命令之后会空一行
2、if和相关语句的括号是这些语句的一部分。就是说 括号用完以后,后面加个空格。
3、绝大多数操作符的使用,都会加空格。当然,空格的目的是为了易于读写,随便用,别恶 心就行。
4、嵌套与其他语句中的语句要缩进,用以显示层次。使用的Tab不是空格。
5、注释都是成块出现的,就是为了让人看起来不蛋疼。
6、函数的定义中,返回类型出现于独立的一行中,函数的名字则在下一行的起始处。
以上就是代码风格,尽量这样写,不这么写,我估计懒得看。蛋疼啊。
我加一条,就是变量名 见文识义 别起名字叫abcdefgh.....


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
数据(一)基本数据类型
基本数据类型有4中,整形,浮点型,指针,聚合类型(数组啊,结构体啊,自定义啊)
整型
整型有,字符,短整型,整型和长整型。这4个都是分为有符号和无符号。
(亲们,计算的容量有限,你们定义的时候,能用小的就别用大的。否则,后果自负)
讲一个特别爽的思想。
标准的c语言中,没有规定长整型要比短整型长,但是规定了长整型不能比短整型短。就是说你定义的时候可以写long int a=333;short int a=333;但是不能定义long int a=33,short int a=333;。这个看着没什么,实际上很爽的。就是说你如果浪费内存空间,程序不会鸟你~~
但是却最大程度上的允许了程序员的灵活性。c语言的思想就是灵活。
范围就是一个表。那个表我懒得搞了,百度去。
要注意,计算机存值的时候不是连续的,是一堆点。你看着是连续的是因为你看不见计算机运行的过程。
变量范围的限制也是一张表,但这个比较重要,思想重要,俺说一下~~~


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有大神来就纠错了。俺学的确实不行,希望更多地大神来纠错~~~~
@sunchy12345678 @侠盗小飞机


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
枚举类型
枚举类型指的是他的值为符号常量而不是字面值的类型。例如
enum jar_Type{CUP,PINT,QUART,HALF_CALLON,CALLIN};
这个语句就声明了一个类型,这个类型称之为jar_Type.这种变量声明方式:emun jar_Type milk_jug;
如果某种特别的枚举类型的变量只是用一个声明,则可以这样写:enum {CUP,PINT,QUART,HALF_CALLON,CALLIN} milk_jug;
这种类型的变量实际上是用整型的方式存储,这些符号明的实际值都是整型值。
一般情况下避免将符号名赋值给整型变量。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
浮点类型
浮点数家族包括float,double,long double~~~
同样,ANSI标准仅仅规定了long double至少和double一样长,而double至少和float一样长。
标准c有一个规定,所有浮点数类型至少能够容纳从10的-37次都10的37次之间的任何值。
头文件float.h中规定了FLT_MAX,DBL_MAX LDBL_MAX以及FLT_MIN,DBL_MIN LDBL_MIN这些表示float,double已经long double能够表示范围。浮点数字字面值在缺省的情况下都是double类型,除非后面有l或者L,表示为long doubl或者,f或F表示float的值。


2026-02-05 13:30:14
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
指针 (蛋疼玩意儿)
变量的值存储于计算机的呢村中,每个变量都占据了一个特定的位置。每个内存地址都是有地址唯一确定并引用。指针只是地址的另一个名字罢了。
可以将计算机的内存想想成一条长街上的一间间房子,每个房间都用一个唯一的号码进行标识,每个位置包含一个值,这儿值和他的地址明显不一样。
指针常量
指针常量和非指针常量在本质上是不同的,因为编译器负责吧变量值赋值给计算机内存中的位置,程序员事先无法知道某个特定的变量存储到内存中的那一个位置,因此你通过操作符获得一个量的地址而不是直接把他的地址写成字面值的常量形式。 而且我们不知道内存中某个地址是否存值,存的什么值,所以把指针常量表达式位数字字面值基本上没有什么用。
字符串常量
字符串就是一串以NULL字节结尾的零个或者多个字符。字符串通常存储在字符数组汇总。由于字符串是以NULL结尾,所以一般字符串中不能包含NULL。其实这样没有什么限制,因为NULL不是一个可以打印的字符。
字符串常量一般写法"goodbye world~"
在字符串唱的存储形式中,所有的字符和NULL终止符都存储在内存的某个位置。K&Rb并没有提及一个字符串常量中的字符是否可以被程序修改,单他清楚表明局用相同的值的不同字符串常量是在内存中分开存储的。
ANSIC则声明吐过对于一个字符串常量进行修改该,其效果是未定义的。他允许将一个字符串常量存储于一个地方,即使他在程序中多次出现,这就使得修改字符串常量变得特别危险。
所以要存储字符串,存到数组里面吧~~~


登录百度账号

扫二维码下载贴吧客户端

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