中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
c語言重點知識點復習資料(5)



第六章

指針變量的本質(zhì)是用來放地址,而一般的變量是放數(shù)值的。

1、int *p 中 *p和p的差別:簡單說*p是數(shù)值,p是地址!

*p可以當做變量來用;*的作用是取后面地址p里面的數(shù)值

p是當作地址來使用??梢杂迷趕canf函數(shù)中:scanf(“%d”,p);

2、*p++ 和 (*p)++的之間的差別:改錯題目中很重要!考試超級重點

*p++是 地址會變化。 口訣:取當前值,然后再移動地址!

(*p)++ 是數(shù)值會要變化。 口訣:取當前值,然后再使數(shù)值增加1。

例題:int *p,a[]={1,3,5,7,9};

p=a;

請問*p++和(*p)++的數(shù)值分別為多少?

*p++: 這個本身的數(shù)值為1。由于是地址會增加一,所以指針指向數(shù)值3了。

(*p)++ 這個本身的數(shù)值為1。由于有個++表示數(shù)值會增加,指針不移動,但數(shù)值1由于自加了一次變成了2。

3、二級指針:

*p:一級指針:存放變量的地址。

**q:二級指針:存放一級指針的地址。

常考題目: int x=7;

int*p=&x,**q=p;

問你:*p為多少?*q為多少?**q為多少?

7 p 7

再問你:**q=&x的寫法可以嗎?

不可以,因為二級指針只能存放一級指針的地址。

4、三名主義:(考試的重點)

數(shù)組名:表示第一個元素的地址。數(shù)組名不可以自加,他是地址常量名。(考了很多次)

函數(shù)名:表示該函數(shù)的入口地址。

字符串常量名:表示第一個字符的地址。

5、移動指針(經(jīng)常加入到考試中其他題目綜合考試)

char *s=“meikanshu”

while(*s){printf(“%c”,*s);s++;}

這個s首先會指向第一個字母m然后通過循環(huán)會一次打印出一個字符,s++是地址移動,打印了一個字母后,就會移動到下一個字母!

6、指針變量兩種初始化(一定要看懂)

方法一:int a=2,*p=&a;(定義的同時初始化)

方法二:int a=2,*p;  (定義之后初始化)

    p=&a;

7、傳數(shù)值和傳地址(每年必考好多題目)

void fun(int a,int b) void fun(int *a,int *b)

{ int t ; { int t ;

t=a;a=b;b=t; t=*a;*a=*b;*b=t;

} }

main() main()

{ int x=1,y=3, { int x=1,y=3,

fun(x,y); fun(&x,&y)

printf(“%d,%d”,x,y); printf(“%d,%d”,x,y);

} }

這個題目答案是1和3。 這個題目的答案就是3和1。

傳數(shù)值,fun是用變量接受,所以fun中 傳地址,fun用指針接受!這個時候fun

的交換不會影響到main中的x和y 。 中的交換,就會影響到main中的x和y。

傳數(shù)值,形參的變化不會影響實參。 傳地址形參的變化絕大多數(shù)會影響到實參!

8、函數(shù)返回值是地址,一定注意這個*號(上機考試重點)

int *fun(int *a,int *b) 可以發(fā)現(xiàn)函數(shù)前面有個*,這個就說明函數(shù)運算結果是地址

{ if(*a>*b)return a; return a 可以知道返回的是a地址。

else return b;

}

main()

{ int x=7,y=8,*max;

max = fun(&x,&y); 由于fun(&x,&y)的運算結果是地址,所以用max來接收。

printf(“%d,%d”,)

}

9、考試重要的話語:

指針變量是存放地址的。并且指向哪個就等價哪個,所有出現(xiàn)*p的地方都可以用它等價的代替。例如:int a=2,*p=&a;

    *p=*p+2;

(由于*p指向變量a,所以指向哪個就等價哪個,這里*p等價于a,可以相當于是a=a+2) 

第七章

數(shù)組: 存放的類型是一致的。多個數(shù)組元素的地址是連續(xù)的。

1、一維數(shù)組的初始化:

int a[5]={1,2,3,4,5}; 合法

int a[5]={1,2,3, }; 合法

int a[]={1,2,3,4,5}; 合法,???,后面決定前面的大?。?/p>

int a[5]={1,2,3,4,5,6}; 不合法,賦值的個數(shù)多余數(shù)組的個數(shù)了

2、一維數(shù)組的定義;

int a[5];注意這個地方有一個重要考點,定義時數(shù)組的個數(shù)不是變量一定是常量。

int a[5] 合法,最正常的數(shù)組

int a[1+1] 合法,個數(shù)是常量2,是個算術表達式

int a[1/2+4] 合法,同樣是算術表達式

int x=5,int a[x]; 不合法,因為個數(shù)是x,是個變量,非法的,

define P 5 int a[P] 合法,define 后的的P是符號常量,只是長得像變量

3、二維數(shù)組的初始化

int a[2][3]={1,2,3,4,5,6}; 合法,很標準的二維的賦值。

int a[2][3]={1,2,3,4,5, }; 合法,后面一個默認為0。

int a[2][3]={{1,2,3,} {4,5,6}}; 合法,每行三個。

int a[2][3]={{1,2,}{3,4,5}}; 合法,第一行最后一個默認為0。

int a[2][3]={1,2,3,4,5,6,7}; 不合法,賦值的個數(shù)多余數(shù)組的個數(shù)了。

int a[][3]={1,2,3,4,5,6}; 不合法,不可以缺省行的個數(shù)。

int a[2][]={1,2,3,4,5,6}; 合法,可以缺省列的個數(shù)。

補充:

1)一維數(shù)組的重要概念:

對a[10]這個數(shù)組的討論。

1、a表示數(shù)組名,是第一個元素的地址,也就是元素a[0]的地址。(等價于&a)

2、a是地址常量,所以只要出現(xiàn)a++,或者是a=a+2賦值的都是錯誤的。

3、a是一維數(shù)組名,所以它是列指針,也就是說a+1是跳一列?!?/p>

對a[3][3]的討論。

1、a表示數(shù)組名,是第一個元素的地址,也就是元素a[0][0]的地址。

2、a是地址常量,所以只要出現(xiàn)a++,或者是a=a+2賦值的都是錯誤的。

3、a是二維數(shù)組名,所以它是行指針,也就是說a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以對它進行賦值操作,同時它們都是列指針,a[0]+1,a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0] 、a[1]、a[2]是不同的,它們的基類型是不同的。前者是一行元素,后三者是一列元素。

2) 二維數(shù)組做題目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目。

步驟一:把他們寫成:      第一列 第二列 第三列  

a[0]à  1    2    3 ->第一行

a[1]à 4   5    6  —>第二行

a[2]à 7   8    9  ->第三行

步驟二:這樣作題目間很簡單:    

*(a[0]+1)我們就知道是第一行的第一個元素往后面跳一列,那么這里就是a[0][1]元素,所以是1。

*(a[1]+2)我們就知道是第二行的第一個元素往后面跳二列。那么這里就是a[1][2]元素,所以是6。

一定記住:只要是二維數(shù)組的題目,一定是寫成如上的格式,再去做題目,這樣會比較簡單。

3) 數(shù)組的初始化,一維和二維的,一維可以不寫,二維第二個一定要寫

int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。 但int a[4][]={2,3,4}非法。

4) 二維數(shù)組中的行指針

int a[1][2];

其中a現(xiàn)在就是一個行指針,a+1跳一行數(shù)組元素。 搭配(*)p[2]指針

a[0],a[1]現(xiàn)在就是一個列指針。a[0]+1 跳一個數(shù)組元素。搭配*p[2]指針數(shù)組使用

5) 還有記住脫衣服法則:超級無敵重要

a[2] 變成 *(a+2) a[2][3]變成 *(a+2)[3]再可以變成 *(*(a+2)+3)

這個思想很重要!

其它考試重點

文件的復習方法:

把上課時候講的文件這一章的題目要做一遍,一定要做,基本上考試的都會在練習當中。

1)字符串的 strlen() 和 strcat() 和strcmp() 和strcpy()的使用方法一定要記住。他們的參數(shù)都是地址。其中strcat() 和strcmp()有兩個參數(shù)。

2)strlen 和 sizeof的區(qū)別也是考試的重點;

3)define f(x)(x*x) 和 define f(x) x*x 之間的差別。一定要好好的注意這寫容易錯的地方,替換的時候有括號和沒有括號是很大的區(qū)別。

4)int *p;

p = (int *)malloc(4);

p = (int *)malloc(sizeof(int));以上兩個等價

當心填空題目,malloc的返回類型是 void *

6)函數(shù)的遞歸調(diào)用一定要記得有結束的條件,并且要會算簡單的遞歸題目。要會作遞歸的題目

7)結構體和共用體以及鏈表要掌握最簡單的。typedef考的很多,而且一定要知道如何引用結構體中的各個變量,鏈表中如何填加和刪除節(jié)點,以及何如構成一個簡單的鏈表,一定記住鏈表中的節(jié)點是有兩個域,一個放數(shù)值,一個放指針。

8)函數(shù)指針的用法(*f)()記住一個例子:

      int add(int x, int y)

{....}

main()

{ int (*f)();

f=add;

}

賦值之后:合法的調(diào)用形式為1、add(2,3);

2、f(2,3);

3、(*f)(2,3)

9)兩種重要的數(shù)組長度:

char a[]={‘a(chǎn)’,’b’,’c’};  數(shù)組長度為3,字符串長度不定。sizeof(a)為3。

char a[5]={ ‘a(chǎn)’,’b’,’c’}  數(shù)組長度為5,字符串長度3。sizeof(a)為5。

10)scanf 和 gets的數(shù)據(jù):

如果輸入的是 good good study!

那么scanf(“%s”,a); 只會接收 good. 考點:不可以接收空格。

gets(a); 會接收 good good study! 考點:可以接收空格。

11)共用體的考查:

union TT

{ int a;

char ch[2];}

考點一: sizeof (struct TT) = 4;

12)“文件包含”的考查點:

    no1.c no2.c

#include”no2.c”

main()

{ add(29 , 33);

…….

}

int add(int a,int b)

{

return a+b;

}


這里一個C語言程序是有兩個文件組成,分別是no1.c, no2.c。那么no1.c中最開始有個#include”no2.c”他表示把第二個文件的內(nèi)容給包含過來,那么no1.c中調(diào)用add()函數(shù)的時候就可以了把數(shù)值傳到no2.c中的被調(diào)用函數(shù)add()了。

一個文件必須要有main函數(shù)?!∵@句話錯了?!±纾簄o2.c就沒有。

頭文件一定是以.h結束的。 這句話錯了。例如:no1.c中就是#include”no2.c”以.c結尾的。

13)指針迷惑的考點:

char ch[]=”iamhandsome”;

char *p=ch;

問你 *(p+2) 和 *p+2的結果是多少?

‘m’ ‘k’ 結果是這兩個,想不通的同學請作死的想!想通為止!

14)數(shù)組中放數(shù)組一定要看懂:

int a[8]={1,2,3,4,4,3,2,2};

int b[5]={0};

b[a[3]]++ 這個寫法要看懂,結果要知道是什么?b[4]++,本身是0,運行完后,b[4]為1了。

15)字符串的賦值

C語言中沒有字符串變量,所以用數(shù)組和指針存放字符串:

1、char ch[10]={“abcdefgh”}; 對

2、char ch[10]=“abcdefgh”; 對

3、char ch[10]={‘a(chǎn)’,’b’,’c’,’d’,’e’,’f’,’g’,’h’}; 對

4、char *p=“abcdefgh”; 對

5、char *p; 對

p=“abcdefgh”;

6、char ch[10]; 錯了!數(shù)組名不可以賦值!

ch=“abcdefgh”;

7、char *p={“abcdefgh”}; 錯了!不能夠出現(xiàn)大括號!

16)字符串賦值的函數(shù)背誦:一定要背誦,當心筆試填空題目。

把s指針中的字符串復制到t指針中的方法

1、while( (*t=*s)!=null ){s++;t++;} 完整版本

2、while( *t=*s ){s++;t++;} 簡單版本

3、while( *t++=*s++); 高級版本

17)typedef 是取別名,不會產(chǎn)生新的類型,他同時也是關鍵字

考點一:typedef int qq 那么 int x 就可以寫成 qq x

考點二:typedef int *qq 那么 int *x就可以寫成 qq x

18)static 考點是一定會考的!復習相關的習題。

static int x;默認值為0。

int x:默認值為不定值。

19)函數(shù)的遞歸調(diào)用一定會考!至少是2分。


本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
3.3 指針 (Pointers)
悶騷程序猿的干貨之一:C語言中數(shù)組、指針和地址的異同
單片機C語言學習
指針數(shù)組與數(shù)組指針
指針數(shù)組,數(shù)組指針,指針函數(shù),函數(shù)指針,二級指針詳解
匠人的百寶箱--C語言重要概念!
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服