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

 
 
 
日一二三四五六
       
       
       
       
       
       

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

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

本吧签到人数:0

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

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

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

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

  • 只看楼主
  • 收藏

  • 回复
  • 御宅小受
  • 超能力者
    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的值。


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


2026-02-05 16:26:25
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
字符串常量会生成一个“指向字符的常量指针”。当一个字符串常量出现于一个表达式中时,表达式所使用的值就是这些字符所存储的地址,而不是这些字符本身。所以可以将一个字符串常量赋值个一个“指向字符的指针”,后面指向这个字符所存储的地址,但是字符串常量不能赋值给一个字符数组。因为字符串常量的直接值是一个指针,而不是字符本身。
字符串的操作在标准库函数中有一套函数。这个放到后面说。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
以上是书上的。
其实说了三点:
1、指针就是地址。
2、子字符串常量最好不要修改。最好放到数组里面。
3、字符串会生成一个字符串指针。尽量用标准库函数对其操作。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基本声明
格式:说明符(一个或者多个) 声明表达式列表(这个就是语法)
说明符(specifier)就是特殊的关键字.....很多说明符是表达同一个意思。这个可以百度。搜索 相等的声明
例如 short a;等同于 short int a;
初始化
在一个生命中可以各一个标量变量指定一个初始值。例如int i=5;
声明简单数组。
eg:int value[10];
声明指针 (看看指针多蛋疼)
eg: int *a;常见的指针声明。 int* a;这个也是指针。
然后int* a,b,c; 这个是a是指针,b,c就是整型了。
这是因为,*这个符号是间接寻址,或者说间接访问。 int是指后面跟的变量的类型。*是一个运算符,他表示后面变量的地址。于是 *a 我们就可以推断a是一个指针。而在int* a,b,c;中仅仅有a前面有*运算符,b和c没有。
再看一个例子
char *message="goodbye world";这个是将字符串常量的第一个地址初始化给这个指针。
这个和 char *message;message="goodbye world";一样。


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
隐式声明
c语言中有几种声明,他的类型名可以忽略。就是说c语言里有几种东西编译器会默认为整形。建议别用。你不写,是真的不想写还是忘了写,这个问题很蛋疼。是什么就是什么写清楚。
typedef
c语言支持一种叫做tyepdef的机制,它允许你为各种数据类型定义新名字。typedef声明的写法和普通的声明基本相同,只是把typedef这个关键字出现在声明的前面。例如,下面这个声明:char *ptr_to_char;在这个之前加上tyepdef声明变为typedef char *ptr_to_char;。
这个声明吧表示符ptr_to_char作为指向字符的指针类型的新名字。你可以像使用任何预定义名字一在下面的声明中使用这个东西。eg: ptr_to_char a;


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
常量
ANSIC允许声明常量。常量的样子和变量完全一样。只是常量的值不能修改。用const定义。
eg : const int a;和int const a;一样。对于常量的初始化应该在定义的时候搞。
当涉及到指针变量的时候有两种东西可以作为常量。
指针变量和他所指向的实体。eg int *pi;pi是一个普通的指向整型的指针。而变量int const *pci就是一个指向整型常量的指针。可以写该指针的值,但不能修改它所指向的值。相比之下,int *const cpi则是声明衣蛾指向整型的常量指针。此时指针是常量,他的至无法修改。但是他所指向的值可以修改。int const *const cpci;这个什么都不能改。
#define是另一种创建名字常量的机制。但是#define要比const好。因为const只能在可以使用变量的地方使用。


  • Krehiz
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
新手看,c语言程序设计,会不会太快啊,感觉太快了


2026-02-05 16:20:25
广告
不感兴趣
开通SVIP免广告
  • 2011山山山山山
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
表示现在在学MFC= =
 做人就要做海军,第一步就是有一个像我一样能说这么多字的小尾巴,不然哪来如此水笔??第二就得控制小尾巴字数,免得进小黑屋~


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
作用域
当变量在程序某个部分被声明的时候,他只有在程序的一定区域才能被访问到。这个区域是有标示符作用域(scope)决定的。
编译器确定了4中作用域,文件作用域,函数作用域,代码块作用域,原型作用域。
表示符声明的位置,决定了他的作用域。位于一对大括号之间的所有语句称之为一个代码块。任何在代码块的开始声明的标示符都具有代码块作用域。
文件作用域是值在所有代码块之外声明的标示符。
原型作用域只适合于在函数原型中声明的参数名。
函数作用域只适用于语句标签。语句标签用于goto语句。一个函数中的所有语句标签必须唯一。这个基本上不要用。(代码逻辑容易乱)


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
今天暂时先这样。没准我抽风还会更。但是大量的更估计要过几天,因为上课的说。........入门的孩子们这些基本概念基本上看不懂,也懒得看。但是后面学了之后在返回来看的时候就觉得这些真的是真理。
其实我也有种说废话的感觉.....


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://tieba.baidu.com/p/2650598340『教学贴』不会的可以取那边提问~~~


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
存储类型
存储类型是值存储变量的内存类型。变量的存储类型决定变量何时创建,何时销毁,以及它的值将要保留多久。有三个地方可以用于存储变量:普通内存,运行时堆栈,硬件寄存器。(不懂的去补补计算机原理,不是计算机专业的不用管)
变量的缺省存储类型,取决与他的声明位置。凡是在任何代码之外声明的变量重视存储与静态内存中,也就是不属于堆栈的内存,这类变量称之为静态变量。对于这类变量,无法指定其他的存储类型。静态变量创建于程序运行之前。在整个程序运行过程中,始终存在。他的值一般不会变,除非进行赋值,或者是程序结束。
在代码块内部声明的变量的缺省存储类型是自动的,也就是它存储在堆栈中,称之为自动变量。有意个关键字auto就是用于修饰这种存储类型。基本不用,因为在代码块内部的时候,不写就是自动变量。程序执行到自动变量的位置时才会创建这个变量。离开这个代码快的时候,会自动销毁这个东西。假如反复调用一个函数,这个东西就会不断的创建销毁。
对于代码块内部声明的变量如果加上static,可以是它称为静态变量。静态变量会一直存在与内存。记住,函数形参不能用于递归。
最后,关键字register可以用于自动变量的声明,提示他们应该存储与机器的硬件寄存器而不是内存中。这种变量称之为寄存器变量。这个基本也不用,因为计算机寄存器存的东西不多,基本上他会自动判断那几个是register。如果这个东西它多,他就只保留前几个。而且编译器一般会自动认定那一个比较适合是register。它的创建和销毁时间和自动变量相同。但是它需要在函数返回值前恢复到之前存储的值。确保寄存器变量没有被损坏。由于这个东西的保存和恢复,所以计算机不会提供寄存器变量的地址。
综上所述,这个就是讲了一下三种存储变量的地方。
速度排名是寄存器,堆栈,内存。由于静态变量以及堆栈对于变量创建和销毁的时间没有智能的判断,仅仅是依靠代码来做,这样会使得c语言程序特别大的时候静态变量特别消耗内存,而且运算很慢.....这个算是c语言的缺点。但是这个也是c语言的优点,因为程序员可以决定这些变量到底是什么类型从而不断的优化代码,调试程序。
爱是他,恨是他,么么哒~~~


  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
初始化
自动变量和静态变量的初始化时有一个重要的差别。在静态变量的初始化中,我们可以把可执行程序文件想要初始化的值放在当前程序执行时变量将会使用的位置。当可执行文件载入到内存时,这个已经保存了正确初始值的位置将赋值给那个变量。完成这个过程不需要额外得到指令,变量也将会得到正确的值。如果,不显式的指定其初始变量值,静态变量将初始化为0。
自动变量的初始化需要更多的开销,因为当成需链接时还无法判断自动变量的存储位置。事实上,函数的局部变量在函数的每次调用中科能占据不同的位置。基于这个理由,自动变量没有缺省的初始值,而显式的初始化将在初始化处插入一条隐式的赋值语句。
这个技巧造成的后果有:
1.自动变量的初始化较之赋值语句效率并无提高。除了声明为const的变量之外,在声明变量的同时进行初始化和先声明后赋值只有风格之差,并无效率之别。
2.这条隐式的赋值语句使自动变量在程序执行到他们所声明的函数或者说是代码快的时候,每次都将重新初始化。这个行为与静态变量大不相同。后者只是在程序开始执行前初始化一次。
3.由于初始化在运行是执行,你可以用任何表达式作为初始化的值。例如:
int func(inta){int b=a+3;}
4.除非你对自动变量进行显式的初始化,否则当自动变量创建是,他的值总是垃圾。


2026-02-05 16:14:25
广告
不感兴趣
开通SVIP免广告
  • 御宅小受
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Static关键字
当用于不同的上下文环境是,static关键字具有不同的意思。当他用于函数定义时,或用与代码快之外的变量声明是,static关键字用于修改标识符的链接属性,从external改为internal,但是标识符存储类型和作用域不受影响。用着中方是声明的函数或者变量只能在声明他们的源文件中访问。
当它用于代码块内部的变量声明时,static关键字用于改变变量的存储类型,从自动变量修改为静态变量,但变量的链接属性和作用域不受影响。用这种方式声明的变来年个在程序执行之前创建,并在程序的整个执行期间一直存在,而不是名词在代码块开始执行的时候创建,在代码块执行之后销毁。


登录百度账号

扫二维码下载贴吧客户端

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