小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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

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


C語言指針進階


本章引言:


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

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

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

C指針神秘的一面進行進一步的解析吧!



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




函數(shù)與指針:

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




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




③指針函數(shù):





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




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

會輸出:one two three  




指針數(shù)組:


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

第一個問題:

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

第二個問題:見圖





二級指針:






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




代碼示例:

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

ps:代碼沒問題,vc6一直報運行時錯誤,如果出錯了,用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)存分配錯誤!\n");
		exit(0);
	}
	printf("請輸入要存儲的元素個數(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修飾一個基本數(shù)據(jù)類型的變量,可以讓變量存儲的值從頭到尾都不變

我們的程序不能進行修改!不過修飾指針變量就有點差異了:

比如:

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

如果我們再添加一句代碼: p = &b;的話就會報錯

如果添加: a = 5;代碼并不出錯,此時 *p ==  a == 5;


分析結(jié)果:

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

但是修改指針指向的地址則是錯誤的?。。?/span>

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


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




本章小結(jié):

①函數(shù)與指針:

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

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

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

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


②指針數(shù)組

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


③二級指針

指向指針變量的指針


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

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

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


⑤使用const修飾指針變量

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




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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多