C语言基础知识
sizeof获取数据类型的占用内存空间大小
按照我以为的思维 结果应该是result为0,num为10
但是现在结果是 result 0 num 是11
首先使用随机数 需要导入随机数的头部文件
<stdlib.h> 如果以时间为随机种子需要导入<time.h>
rand的取值范围是0 - 32767之间
例子如果去随机数5-15之间
那么 rand() % 11 + 5
取 a -b 之间
随机数公式 rand() % (b-a+1)+a
延迟的意思
Sleep(5) 延迟5毫秒必须要加入头文件<windows.h>
思考
那如果是{"测试","测试1","测试2","测试3","测试4"};这种的字符数组怎么定义?
如果改变 *指针变量名的值 原来的变量值也会改变
---------- 拓展 -------------
指针的值一般是 十六进制
%x 输出结果十六进制小写字母且去头部0详情看例子
注意指针变量赋值一定要用取地址符,不能直接赋值为十六进制的但是可以赋值为NULL
int * test = NULL;
简单的例子
取指针变量的值
注意指针也有指针哦
通过这个例子我们知道数组名,他就是指针数组的首地址;
指针参与运算
我们知道输出指针名它是会输出十六位的内存地址的,所以每次运行指针像下位移,位移多少长度 我们这里定义的是double类型的数组,double占8个空间,所以每次运行ptr都像下运行8个位置
拓展指针运算
对比以下这几句,看看结果会是什么?
看运行结果我们对比下,在分析:
运行拓展第一次:
运行拓展第二次:
运行拓展第三次:
指针不止+1哦
数组的尾地址
二维数组的指针
理解字符串数组与字符指针的区别
我们可以发现 字符指针 只是把字符串的地址给了这个指针,而数组字符,则是开辟一个新的内存空间存放这个字符
常用的内置方法
malloc()动态分配内存
calloc()动态分配内存意义与malloc一致(推荐使用)
定义一个函数找到数组中某个数值的下标
这样就会改变外部变量!因为我们传了指针进去直接改变指针指向的值,当然会被改变
用法
这个例子中我们不加static 或者改成auto,那么结果打印始终是1,因为每次运行num函数中a都会被重新赋值为0;
新建.h为后缀名的文件
我们新建文件名为test.h
一般用来定义常量
extern申明变量在另一个文件中
如现在有两个.c文件 main.c 、test.c
如果test.c有个全局变量a 那么定义
嵌套结构
简化结构体的定义与使用
结构体中含有多个属性(结构体)
结构数组
这次我们把所有的功能放在头文件中使用
新建hero.h头文件以及hero.c
hero.c我们先填几个玩家以及职业,后期可以拓展进行职业类的添加函数
结果:
或者传指针
我们创建两个文件一个《game.h》《game.c》
game.h
game.c实现文件
运行效果
1、enum ->枚举
2、union多选一
绛旓細涓銆佺畻娉曠粨鏋 1銆侀『搴忕粨鏋勩侀夋嫨缁撴瀯銆佸惊鐜粨鏋勶紱2銆佸惊鐜粨鏋勫張鍒嗕负while鍨嬨乽ntil鍨嬨乫or寰幆缁撴瀯锛涗簩銆佹暟鎹被鍨 1銆佸父閲忥細甯搁噺鍖呮嫭瀛楅潰甯搁噺銆佺洿鎺ュ父閲忓拰绗﹀彿甯搁噺锛2銆佸彉閲忥細C璇█瑙勫畾鏍囧織绗﹀彧鑳界敱瀛楁瘝銆佹暟瀛楀拰涓嬪垝绾夸笁绉嶅瓧绗︾粍鎴愶紝涓旂涓涓瓧绗﹀繀椤绘槸瀛楁瘝鎴栬呬笅鍒掔嚎锛涘繀椤诲帇杩厛瀹氫箟鍚庝娇鐢紱姣忎竴涓彉閲忚...
绛旓細c璇█鍏ラ棬鍩虹鐭ヨ瘑鐐规湁: 1銆乧璇█鐨勫懡鍚嶏紱2銆佸彉閲忓強璧嬪硷紱3銆佸熀鏈暟鎹被鍨嬶紱4銆佹牸寮忓寲杈撳嚭璇彞锛5銆佸己鍒剁被鍨嬭浆鎹紱6銆佸父閲忥紱7銆佽嚜鍔ㄧ被鍨嬭浆鎹C璇█鏄竴绉嶉氱敤鐨勩侀潰鍚戣繃绋嬪紡鐨勮绠楁満绋嬪簭璁捐璇█銆侰璇█鏄竴绉嶈绠楁満绋嬪簭璁捐璇█锛屽畠鏃㈠叿鏈夐珮绾ц瑷鐨勭壒鐐癸紝鍙堝叿鏈夋眹缂栬瑷鐨勭壒鐐 瀹冨彲浠ヤ綔涓哄伐浣滅郴缁熻璁...
绛旓細c璇█鍩虹鐭ヨ瘑蹇呰儗濡備笅锛1銆佸彉閲忓悕绉板繀椤讳互瀛楁瘝鎴栦笅鍒掔嚎寮濮嬶紝鑰屼笉鑳界敤鏁板瓧銆傚湪瀹為檯绋嬪簭涓紝浣跨敤鏈澶氱殑鏄瓧姣嶏紝鑰屼笅鍒掔嚎寮濮嬬殑鍙橀噺鍚嶇О鍒欐槸涓撻棬鐢ㄤ簬绯荤粺鐨勩2銆丆璇█鏄竴闂ㄩ潰鍚戣繃绋嬨佹娊璞$殑閫氱敤缂栫▼璇█锛屽湪绯荤粺鐨勫簳灞傚紑鍙戜腑寰楀埌浜嗗箍娉涚殑搴旂敤銆3銆丆璇█涓槸鐢ㄩ潪0琛ㄧず閫昏緫鐪熺殑锛岀敤0琛ㄧず閫昏緫鍋囩殑銆4銆丆...
绛旓細c璇█鍩虹鐭ヨ瘑鏈夛細1銆乧璇█鐨勫懡鍚嶃2銆佸彉閲忓強璧嬪笺3銆佸熀鏈暟鎹被鍨嬨4銆佹牸寮忓寲杈撳嚭璇彞銆5銆佸己鍒剁被鍨嬭浆鎹6銆佸父閲忋7銆佽嚜鍔ㄧ被鍨嬭浆鎹俢璇█鐨勭壒鐐癸細1銆佸箍娉涙с侰璇█鐨勮繍绠楄寖鍥寸殑澶у皬鐩存帴鍐冲畾浜嗗叾浼樺姡鎬с侰璇█涓寘鍚簡34绉嶈繍绠楃锛屽洜姝よ繍绠楄寖鍥磋瓒呭嚭璁稿鍏跺畠璇█锛屾澶栧叾杩愮畻缁撴灉鐨勮〃杈惧舰寮忎篃鍗佸垎...
绛旓細瀛︿範C璇█灏辨槸瑕佺粡杩囧嚑涓弽澶,鎵嶈兘鍓嶅悗璐┛,绉疮搴旇鎺屾彙鐨C鐭ヨ瘑銆 閭d箞,鎴戜滑濡備綍瀛﹀ソ銆奀绋嬪簭璁捐銆嬪憿? 涓.瀛﹀ソC璇█鐨勮繍绠楃鍜岃繍绠楅『搴 杩欐槸瀛﹀ソ銆奀绋嬪簭璁捐銆嬬殑鍩虹,C璇█鐨勮繍绠楅潪甯哥伒娲,鍔熻兘鍗佸垎涓板瘜,杩愮畻绉嶇被杩滃浜庡叾瀹冪▼搴忚璁¤瑷銆傚湪琛ㄨ揪寮忔柟闈㈣緝鍏跺畠绋嬪簭璇█鏇翠负绠娲,濡傝嚜鍔犮佽嚜鍑忋侀楀彿杩愮畻鍜屼笁鐩繍绠...
绛旓細绠楁湳琛ㄨ揪寮忔槸鐢ㄧ畻鏈繍绠楃鍜屾嫭鍙峰皢杩愮畻閲(涔熺О鎿嶄綔鏁)杩炴帴璧锋潵鐨勩佺鍚C璇█璇硶瑙勫垯鐨勮〃杈惧紡銆傝繍绠楀璞″寘鎷嚱鏁般佸父閲忓拰鍙橀噺绛夈 鍦ㄨ绠楁満璇█涓,绠楁湳琛ㄨ揪寮忕殑姹傚艰寰嬩笌鏁板涓殑鍥涘垯杩愮畻鐨勮寰嬬被浼,鍏惰繍绠楄鍒欏拰瑕佹眰濡備笅銆 (1)鍦ㄧ畻鏈〃杈惧紡涓,鍙娇鐢ㄥ灞傚渾鎷彿,浣嗘嫭鍙峰繀椤婚厤瀵广傝繍绠楁椂浠庡唴灞傚渾鎷彿寮濮,鐢卞唴鍚戝渚濇...
绛旓細涓撳崌鏈珻璇█鐨鐭ヨ瘑涓昏鍖呮嫭浠ヤ笅鍑犱釜鏂归潰锛1.C璇█鍩虹锛氬寘鎷珻璇█鐨勫熀鏈娉曘佹暟鎹被鍨嬨佽繍绠楃銆佹帶鍒剁粨鏋勶紙濡俰f璇彞銆乫or寰幆绛夛級銆佸嚱鏁般佹寚閽堢瓑銆2.鏁扮粍鍜屽瓧绗︿覆锛氬寘鎷竴缁存暟缁勩佷簩缁存暟缁勩佸缁存暟缁勶紝浠ュ強瀛楃涓茬殑瀹氫箟銆佹搷浣滃拰澶勭悊銆3.缁撴瀯浣撳拰鑱斿悎浣擄細鐞嗚В缁撴瀯浣撳拰鑱斿悎浣撶殑姒傚康锛屾帉鎻″浣曞畾涔夊拰浣跨敤...
绛旓細C璇█鍩虹鐭ヨ瘑1.1 C璇█绠浠婥璇█浜1972骞寸敱缇庡浗鐨凞ennis Ritchie鍙戞槑,骞堕娆″湪閰嶅浜哢NIX鎿嶄綔绯荤粺鐨凞EC PDP-11璁$畻鏈轰笂瀹炵幇銆傚畠鐢辨棭鏈熺殑缂栫▼璇█BCPL(Basic Combind Programming Language)鍙戝睍婕斿彉鑰屾潵銆1970骞,AT&T璐濆皵瀹為獙瀹ょ殑Ken Thompson鏍规嵁BCPL璇█璁捐鍑轰簡杈冨厛杩涘苟鍙栧悕涓築鐨勮瑷,閫氳繃涓嶆柇淇敼銆佸畬鍠,鏇村厛杩涚殑C璇...
绛旓細C璇█7涓紪杈戠殑姝ラ寮虹儓鎺ㄨ崘 绗1姝:瀹氫箟绋嬪簭鐩爣 褰撲綘鍦ㄥ紑濮嬪啓绋嬪簭涔嬪墠锛屼綘搴斿甯屾湜绋嬪簭瑕佸仛浠涔堟湁涓涓竻鏅扮殑鎯虫硶銆傝冭檻绋嬪簭闇瑕佺殑淇℃伅锛岀▼搴忛渶瑕佽繘琛岀殑璁$畻鍜屾搷浣滐紝浠ュ強绋嬪簭搴旇鍚戜綘鎶ュ憡鐨勪俊鎭傚湪杩欎竴瑙勫垝闃舵锛屼綘搴旇鐢ㄤ竴鑸蹇垫潵鑰冭檻闂锛岃屼笉鏄竴浜涘叿浣撶殑璁$畻鏈鸿瑷鏈鏉ヨ冭檻銆傜畝鍗曟潵璇达紝鎴戜滑鎵瑕...
绛旓細鍥犱负C璇█绠鍗曟槗瀛︼紝鎵浠ユ垚涓哄涔犵紪绋嬬殑鍏ラ棬璇█涔嬩竴銆傚ぇ瀛︾涓骞村凡缁忓畨鎺掍簡C璇█鐩稿叧鐨勮绋嬨傚彲瑙侊紝C璇█鐨勫涔犱笉闇瑕佸厛淇锛屽彲浠ヨ交鏉惧叆闂ㄣ傞檮浠舵槸涓鏈傚悎鍒濆鑰呭涔犵殑C璇█涔︾睄銆傚寘鎷:浠嬬粛鍩烘湰鏁版嵁绫诲瀷銆佽繍绠楃鍜岃〃杈惧紡銆佹帶鍒舵祦銆佸嚱鏁般佹寚閽堛佹暟鎹粨鏋勩佽緭鍏ヨ緭鍑虹瓑鍩虹鐭ヨ瘑銆傜啛缁冭繍鐢ㄤ笂杩癈璇█瑙勫垯锛屽嵆鍙...