乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C語言快速入門系列(7)

       Cola_mini 2016-08-28
      C語言快速入門系列(七)

      C語言快速入門系列(七)


      C語言指針進(jìn)階


      本章引言:


      在前面第5節(jié)中我們對(duì)C語言的指針進(jìn)行了初步的學(xué)習(xí)理解;作為C語言的靈魂,

      C指針肯定沒那么簡單,在這一節(jié)中,我們將會(huì)對(duì)指針進(jìn)行進(jìn)一步的學(xué)習(xí),比如二級(jí)指針,

      指針數(shù)組,內(nèi)存分配和const修飾指針常量等!下面就請(qǐng)大家跟隨筆者的腳步,對(duì)

      C指針神秘的一面進(jìn)行進(jìn)一步的解析吧!



      本節(jié)學(xué)習(xí)路線圖:




      函數(shù)與指針:

      ①指針作為函數(shù)的形參:




      ②指向函數(shù)的指針:




      ③指針函數(shù):





      ④帶參數(shù)的主函數(shù)




      ps:該代碼的運(yùn)行:先要編譯生成exe文件后,來到exe所在文件目錄下:輸入:  文件名  one two three   

      會(huì)輸出:one two three  




      指針數(shù)組:


      兩個(gè)問題:如何保存一個(gè)字符串?如果保存的不止一個(gè),而是多個(gè)呢?

      第一個(gè)問題:

      ①char name[20] = "~~~"   ②char *name = "~~~"       //前者定義了長度,不能直接賦值,明顯后者比較靈活

      第二個(gè)問題:見圖





      二級(jí)指針:






      內(nèi)存的動(dòng)態(tài)分配:




      代碼示例:

      動(dòng)態(tài)分配10個(gè)整型的空間大小,如果大于這個(gè)數(shù)目則動(dòng)態(tài)分配,否則利用realloc重新分配內(nèi)存

      ps:代碼沒問題,vc6一直報(bào)運(yùn)行時(shí)錯(cuò)誤,如果出錯(cuò)了,用C-Free或者Visual studio等編譯器試試!


      <span style="font-family:Microsoft YaHei;">#include <stdio.h>
      #include <stdlib.h>
      #define N 10
      
      int main()
      {
      	int *p = 0;
      	int  i,num,*q = 0;
      	p = (int *)malloc((N * sizeof(int)));
      	if(p == 0)
      	{
      		printf("內(nèi)存分配錯(cuò)誤!\n");
      		exit(0);
      	}
      	printf("請(qǐng)輸入要存儲(chǔ)的元素個(gè)數(shù):\n");
      	scanf("%d",&num);
      	if(num <= N)
      	{
      		for(i = 0;i < N;i++)
      		scanf("%d",p+i);
      	}
      	else
      	{
      		for(i = 0;i < num;i++)
      		q = (int *)realloc(p,(N + N)*sizeof(int));
      		if(q == 0)exit(0);
      		for(i = 0;i < num;i++)
      		scanf("%d",q + i);
      		p = q;
      	}
      	for(i = 0;i < num;i++)
      	printf("%3d",*(p+i));
      	
      	printf("\n");
      	free(p);
      	return 0;	
      }</span>



      使用const修飾指針變量


      我們都知道使用const修飾一個(gè)基本數(shù)據(jù)類型的變量,可以讓變量存儲(chǔ)的值從頭到尾都不變

      我們的程序不能進(jìn)行修改!不過修飾指針變量就有點(diǎn)差異了:

      比如:

      int a = 3,b = 4; const int *p = &a;

      如果我們再添加一句代碼: p = &b;的話就會(huì)報(bào)錯(cuò)

      如果添加: a = 5;代碼并不出錯(cuò),此時(shí) *p ==  a == 5;


      分析結(jié)果:

      使用const修飾指針時(shí),表明該指針是一個(gè)常量指針,它所指向的變量的值是可以修改的;

      但是修改指針指向的地址則是錯(cuò)誤的?。?!

      在C許多的標(biāo)準(zhǔn)庫函數(shù)都將某些指針參數(shù)的類型前加上const,目的是保護(hù)參數(shù)!


      ps:int *const p = &a;    const  int * const p = &a;   和上面的都是等價(jià)的!




      本章小結(jié):

      ①函數(shù)與指針:

      1.指針作為函數(shù)的形參: 指針參數(shù)對(duì)應(yīng)的實(shí)參需要為變量地址

      2.指向函數(shù)的指針:函數(shù)的首地址稱為函數(shù)的指針,通過函數(shù)名可以找到并且執(zhí)行函數(shù)

      3.指針函數(shù):返回值類型是一個(gè)指針

      4.帶參數(shù)的主函數(shù): int main(int argc,char *argv[]) :形參依次為:記錄參數(shù)個(gè)數(shù)和存儲(chǔ)參數(shù)內(nèi)容的字符串?dāng)?shù)組


      ②指針數(shù)組

      二維數(shù)組存放字符串與指針數(shù)組存放字符串的比較


      ③二級(jí)指針

      指向指針變量的指針


      ④內(nèi)存的動(dòng)態(tài)分配:

      1.內(nèi)存分配圖

      2.C語言提供的四個(gè)內(nèi)存分配函數(shù)的使用:malloc(),calloc(),realloc(),free()的使用


      ⑤使用const修飾指針變量

      可以修改的指向地址的變量的值,不能修改的是指針?biāo)赶虻牡刂?




        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多