欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C提高1內(nèi)存四區(qū)變量本質(zhì)棧開口方向指針鐵律1-創(chuàng)新互聯(lián)

C 提高第一天復習

創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡營銷,包括成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、SEO優(yōu)化、網(wǎng)絡推廣、整站優(yōu)化營銷策劃推廣、電子商務、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制及解決方案,創(chuàng)新互聯(lián)核心團隊十年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務,在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

內(nèi)存四區(qū),變量常量的本質(zhì),函數(shù)調(diào)用模型,棧開口方向,指針鐵律1,指針是一種數(shù)據(jù)類型

C 提高學員標準:寫一個標準的冒泡排序

選擇法或者冒泡法排序

在一個函數(shù)內(nèi)排序

通過函數(shù)調(diào)用的方式排序

數(shù)組做函數(shù)參數(shù)的技術(shù)盲點和推演

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	int a[] = {3,66,54,32,11,22,99,2334,32};
	
	for (i = 0; i < sizeof(a) / sizeof(int); i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n", a[i]);

	for (i = 0; i < sizeof(a) / sizeof(int); i++)
	{
		for (j = i+1; j < sizeof(a) / sizeof(int); j++)
		{
			if (a[i] > a[j])
			{
				tmp = a[i];
				a[i] = a[j];
				a[j] = tmp;
			}
		}
	}

	for (i = 0; i < sizeof(a) / sizeof(int); i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n", a[i]);



	system("pause");
}

編譯運行:
3 66 54 32 11 22 99 2334 32
3 11 22 32 32 54 66 99 2334
請按任意鍵繼續(xù). . .

冒泡程序,優(yōu)化輸出與排序 與 函數(shù)的數(shù)組參數(shù)問題

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void printfArray(int array[], int len)
{
	int i;
	for (i = 0; i < len; i++)
	{
		printf("%d ", array[i]);
	}
	printf("\n", array[i]);
}

//數(shù)組做函數(shù)的參數(shù)的退回問題,退回為一個指針
//結(jié)論:把數(shù)組內(nèi)存的首地址和有效長度傳給被調(diào)用的函數(shù)
//本質(zhì):函數(shù)中的數(shù)組形參,編譯器會把它當成指針處理
void sortArray(int array[], int len)
{
	int i, j, tmp;
	for (i = 0; i <len; i++)
	{
		for (j = i + 1; j < len; j++)
		{
			if (array[i] > array[j])
			{
				tmp = array[i];
				array[i] = array[j];
				array[j] = tmp;
			}
		}
	}
}


int main()
{

	int a[] = {3,66,54,32,11,22,99,2334,32};
	int len = sizeof(a) / sizeof(int);

	printfArray(a, len);
	sortArray(a,len);
	printfArray(a, len);
	
	system("pause");
}



編譯運行:
3 66 54 32 11 22 99 2334 32
3 11 22 32 32 54 66 99 2334
請按任意鍵繼續(xù). . .

數(shù)據(jù)類型概念:

“類型”是對數(shù)據(jù)的抽象

類型相同的數(shù)據(jù)有相同的表示形式、存儲格式以及相關(guān)的操作

程序中使用的所有數(shù)據(jù)都必定屬于某一種數(shù)據(jù)類型

C 提高1  內(nèi)存四區(qū) 變量本質(zhì) 棧開口方向 指針鐵律1

基本數(shù)據(jù)類型:typedef 數(shù)組與地址

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct teacher1{
	char name[64];
	int age;
}Teacher1;

//使用typedef,以后定義就是這樣了 Teacher2 t2;
typedef struct teacher2{
	char name[64];
	int age;
}Teacher2;


int main()
{
	
	int b[10];
	printf("b:%d , b+1:%d \n", b, b + 1);
	printf("&b:%d, &b+1:%d \n", &b, &b + 1);
	// b 代表數(shù)組首元素的地址
	// &b代表整個數(shù)組的地址
	// &b+1代表跨過整個數(shù)組地址


	struct teacher1 t1;
	Teacher1.age = 0;
	Teacher2 t2;

	typedef int u32;
	printf("u32 =%d \n",sizeof(u32));


	system("pause");
}
編譯運行:
b:3603504 , b+1:3603508
&b:3603504, &b+1:3603544
u32 =4
請按任意鍵繼續(xù). . .

數(shù)據(jù)類型的本質(zhì)思考

思考數(shù)據(jù)類型和內(nèi)存有關(guān)系嗎?

C/C++為什么會引入數(shù)據(jù)類型?

數(shù)據(jù)類型的本質(zhì)

數(shù)據(jù)類型可理解為創(chuàng)建變量的模具(模子);是固定內(nèi)存大小的別名。

數(shù)據(jù)類型的作用:編譯器預算對象(變量)分配的內(nèi)存空間大小

程序舉例,如何求數(shù)據(jù)類型的大小  sizeof(int *)

請問:數(shù)據(jù)類型可以有別名嗎?數(shù)據(jù)類型可以自定義嗎?(typedef)

C 提高1  內(nèi)存四區(qū) 變量本質(zhì) 棧開口方向 指針鐵律1

數(shù)據(jù)類型大小C程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a = 10;
	int b[10] ;
	printf("int a:%d \n", sizeof(a));
	printf("int a:%d \n", sizeof(int *));
	printf("int b:%d \n", sizeof(b));
	printf("int b:%d \n", sizeof(b[0]));
	printf("int b:%d \n", sizeof(*b));
	printf("hello.....\n");
	return 0;
} 
編譯運行:
C:\Users\chunli>gcc main.c & a
int a:4
int a:4
int b:40
int b:4
int b:4
hello.....

常量的探討:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char * getstr1()
{
	char *p = "1234";
	return p;
}

char * getstr2()
{
	char *p = "5678";
	return p;
}

int main()
{
	char *p1 = NULL;
	char *p2 = NULL;
	p1 = getstr1();
	p2 = getstr2();
	printf("%s,%s \n", p1, p2);
	printf("%d,%d \n", p1, p2);
	system("pause");
}

編譯運行:
1234,5678
14309464,14309644
請按任意鍵繼續(xù). . .

改一改:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char * getstr1()
{
	char *p = "1234";
	return p;
}

char * getstr2()
{
	char *p = "1234";
	return p;
}

int main()
{
	char *p1 = NULL;
	char *p2 = NULL;
	p1 = getstr1();
	p2 = getstr2();
	printf("%s,%s \n", p1, p2);
	printf("%d,%d \n", p1, p2);
	system("pause");
}

編譯運行:
1234,1234
2054232,2054232
請按任意鍵繼續(xù). .

堆棧變量,函數(shù)返回一個被析構(gòu)的內(nèi)存空間塊

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//堆
char * getmem(int size)
{
	char *p = NULL;
	p = (char *)malloc(size);
	return p;
}

//棧
//return 不是把內(nèi)存塊返回出來,而是把首地址返回了
char * getmem2()
{
	char p[20];
	strcpy(p, "haha2 \n");
	return p;	//【危險!】p即將釋放,但是地址返回去來了。
}


int main()
{
	char  *p = NULL;
	p = getmem(20);
	strcpy(p, "haha1 \n");
	printf("%s",p);
	free(p);
	p = NULL;
	
	p = getmem2();//返回了一個被析構(gòu)的數(shù)據(jù)塊
	printf("%s", p);//不應該這么做!


	system("pause");
}

編譯運行:
haha1
haha2
請按任意鍵繼續(xù). . .

棧的開口方向:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{

	int a;
	int b;
	printf("&a = %d \n", &a);
	printf("&b = %d \n", &b);
	system("pause");
}
編譯運行:
C:\Users\chunli>gcc -o main.exe main.c & main
&a = 2686652
&b = 2686648
請按任意鍵繼續(xù). . .

C 提高1  內(nèi)存四區(qū) 變量本質(zhì) 棧開口方向 指針鐵律1

數(shù)組基地址永遠都是在下面:

C 提高1  內(nèi)存四區(qū) 變量本質(zhì) 棧開口方向 指針鐵律1

指針鐵律1:指針是一種數(shù)據(jù)類型


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//*p 在等號的左邊 修改內(nèi)存
//*p 在等號的右邊 讀取內(nèi)存


char * getstr()
{
	int *tmp = "hello \n";//	常量區(qū)
	return tmp;
}

int main()
{

	int a;
	char *p1 = 100;//分配4個字節(jié)
	p1 = &a;
	*p1 = 20;	//*就像一把鑰匙,找到這個地址,并修改它
	printf("%d  \n", sizeof(p1));
	printf("%d  \n", *p1);

	int b = 0;
	b = *p1;
	printf("%d  \n", b);


	char p2 = (char *)malloc(100);
	char p3 = (char *)malloc(100);

	char *p4 = getstr();
//	*(p4 + 2) = 'K';  因為返回的是常量	,不能修改
	printf("%s",p4);
	system("pause");
}

指針經(jīng)典話語:

1,指針指向誰,就把誰的地址賦給指針;

2,指針變量 和 它指向的內(nèi)存空間變量是兩個不同的概念

3,理解指針的關(guān)鍵是內(nèi)存,沒有內(nèi)存哪里來的指針

變量的本質(zhì)是一個固定大小的數(shù)據(jù)塊,變量名就是數(shù)據(jù)塊的編號

內(nèi)存的使用范圍:

main函數(shù)可以在棧分配內(nèi)存/堆分配內(nèi)存/全局分配內(nèi)存,可以給子函數(shù)使用

子函數(shù)在棧分配的內(nèi)存不能給主函數(shù)使用,但是堆內(nèi)存與全局變量是可以給main使用

編譯器會為每個程序分配一個內(nèi)存4區(qū),主函數(shù)與子函數(shù)公用這個內(nèi)存4區(qū)

建立正確程序運行內(nèi)存布局圖是學好C的關(guān)鍵!

指針鐵律1:指針是一種數(shù)據(jù)類型

1)指針也是一種變量,占有內(nèi)存空間,用來保存內(nèi)存地址

2)*p 操作內(nèi)存;

3)*就像一把鑰匙,通過一個地址(&a),去修改a變量的標示的內(nèi)存空間

4)不斷的給指針賦值,相當于不停的改變指針的指向。

5) 指針是一種數(shù)據(jù)類型,是指它指向內(nèi)存空間的數(shù)據(jù)類型

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁標題:C提高1內(nèi)存四區(qū)變量本質(zhì)棧開口方向指針鐵律1-創(chuàng)新互聯(lián)
文章起源:http://aaarwkj.com/article34/iespe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作商城網(wǎng)站、網(wǎng)站改版、品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
日韩免费中文视频不卡| 国产无遮挡又黄又爽网站| 日韩一日韩一区二区三电影在线观看| 欧美日韩亚洲国产激情| 国产一区二区乱码在线| 国产二区日韩成人精品| 美女床上激情啪啪网页| 不卡的av中文字幕在线播放| 日本人妻伦理在线播放| 日韩精品欧美中文字幕| 免费在线观看成人av| 传媒视频免费在线观看| 亚洲日本av一区二区| 亚洲视频精品一区二区三区| 99久热在线精品视频| 欧美日韩亚洲一区二区搜索| 2021天天操夜夜爽| 成人午夜激情在线观看| 国产大学生情侣在线视频| 丰满人妻被黑人猛烈进入免费 | 日本岛国大片一区二区在线观看| 国产综合永久精品日韩鬼片| 欧美日韩亚洲精品三级| 国产三级自拍视频在线观看网站| 极品白嫩少妇无套内谢| 亚洲精品一区二区牛仔裤| 久久国产欧美日韩精品| 精品成人在线一区二区| 国产黄色片网站在线观看| 亚洲欧美激情啪啪啪| 丁香六月婷婷激情啪啪综合| 2004年亚洲中文字幕| 日韩性视频激情在线一区| 国产一级黄色免费大片| 日本一区二区国产在线| 一区二区三区都市激情| 久久亚洲综合色一区二区三区| 青青草视频在线好好热| 亚洲精品欧美日韩久久| 高潮少妇水多毛多av| 国产一级黄色录像大片|