最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言超詳細(xì)講解指針與結(jié)構(gòu)體

 更新時(shí)間:2022年05月05日 16:42:20   作者:野豬佩奇`  
指針提供了對地址操作的一種方法,因此,使用指針可使得C語言能夠更高效地實(shí)現(xiàn)對計(jì)算機(jī)底層硬件的操作。另外,通過指針可以更便捷地操作數(shù)組。C數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是C編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng)

本節(jié)目標(biāo)

理解內(nèi)存與地址的相關(guān)概念,初步掌握指針的定義與使用,理解結(jié)構(gòu)體的概念,掌握其基本的使用及訪問方法。

初識(shí)指針

1、內(nèi)存與地址

內(nèi)存是電腦上特別重要的存儲(chǔ)器,計(jì)算機(jī)中程序的運(yùn)行都是在內(nèi)存中進(jìn)行的。

*所以為了有效的使用內(nèi)存,就把內(nèi)存劃分成一個(gè)個(gè)小的內(nèi)存單元,每個(gè)內(nèi)存單元的大小是1個(gè)字節(jié)。 *同時(shí)為了能夠有效的訪問到內(nèi)存的每個(gè)單元,就給內(nèi)存單元進(jìn)行了編號(hào),這些編號(hào)被稱為該內(nèi)存單元的地址。

2、變量的地址

變量是創(chuàng)建內(nèi)存中的(在內(nèi)存中分配空間的),每個(gè)內(nèi)存單元都有地址,所以變量也是有地址的。

取出變量地址如下:

#include <stdio.h>
int main()
{
 int num = 10;
 &num;//取出num的地址
    //注:這里num的4個(gè)字節(jié),每個(gè)字節(jié)都有地址,取出的是第一個(gè)字節(jié)的地址(較小的地址)
 printf("%p\n", &num);//打印地址,%p是以地址的形式打印
 return 0;
}

3、指針變量

*指針變量:用來存放指針的變量(指針就是地址)。

#include<stdio.h>
{
	int num = 10;
	int *p;//p為一個(gè)整形指針變量,int*是p的類型,其中*代表p是一個(gè)指針,int表示p指向的變量的類型是int的。
	p = &num;
	return 0;
}

4、指針的使用

#include <stdio.h>
int main()
{
	int num = 10;
	int* p = &num;
	*p = 20;
	printf("%d\n", num);
	return 0;
}

int* p = &num :定義一個(gè)指針變量 p,并將 num 的地址賦給 p,這時(shí) p 里面存放的就是 num 的地址,也就是說 p 指向了 num;

*p = 20 :* 是解引用操作符,*p 就是對 p 進(jìn)行解引用,就是通過 p 里面存放的 num 的地址找到 num,并將 num 空間中存放的數(shù)據(jù)10修改為20;

5、指針變量的大小

#include <stdio.h>
int main()
{
	//%zu:用來打印無符號(hào)整型,與 %u 相似
	printf("%zu\n", sizeof(char*));   
	printf("%zu\n", sizeof(short*));
	printf("%zu\n", sizeof(int*));
	printf("%zu\n", sizeof(double*));
	return 0;
}

*所以:指針大小在32位平臺(tái)是4個(gè)字節(jié),64位平臺(tái)是8個(gè)字節(jié)。(本質(zhì)是因?yàn)椴煌脚_(tái)下的地址線數(shù)量不同)

初識(shí)結(jié)構(gòu)體

1、什么是結(jié)構(gòu)體

結(jié)構(gòu)體是C語言中一種重要的數(shù)據(jù)類型,該數(shù)據(jù)類型由一組稱為成員(或稱為域,或稱為元素)的不同數(shù)據(jù)組成,其中每個(gè)成員可以具有不同的類型。結(jié)構(gòu)體通常用來表示類型不同但是又相關(guān)的若干數(shù)據(jù)。

結(jié)構(gòu)體類型不是由系統(tǒng)定義好的,而是需要程序設(shè)計(jì)者自己定義的。C語言提供了關(guān)鍵字struct來標(biāo)識(shí)所定義的結(jié)構(gòu)體類型。

關(guān)鍵字struct和結(jié)構(gòu)體名組合成一種類型標(biāo)識(shí)符,其地位如同通常的int、char等類型標(biāo)識(shí)符,其用途就像 int 類型標(biāo)識(shí)符標(biāo)識(shí)整型變量一樣可以用來定義結(jié)構(gòu)體變量。定義變量以后,該變量就可以像定義的其他變量一樣使用了;成員又稱為成員變量,它是結(jié)構(gòu)體所包含的若干個(gè)基本的結(jié)構(gòu)類型,必須用“{}”括起來,并且要以分號(hào)結(jié)束,每個(gè)成員應(yīng)表明具體的數(shù)據(jù)類型。

2、結(jié)構(gòu)體的定義

下面我們以學(xué)生來舉例:假設(shè)一個(gè)學(xué)生包括姓名、年齡、性別、學(xué)號(hào)五個(gè)信息,為了能夠整體的描述一個(gè)學(xué)生,我們可以定義一個(gè)結(jié)構(gòu)體類型。

struct Stu
{
    char name[20];//名字
    int age;      //年齡
    char sex[5];  //性別
    char id[15]; //學(xué)號(hào)
};

3、結(jié)構(gòu)體的使用

#include<stdio.h>
int main()
{
	//定義結(jié)構(gòu)體變量并對其進(jìn)行初始化
	struct Stu s = { "張三",18,"nan","220210101" };
	//兩種結(jié)構(gòu)體訪問操作符
	// . 操作符
	printf("%s\t%d\t%s\t%s\n", s.name, s.age, s.sex, s.id);
	// -> 操作符
	struct Stu* ps = &s;  //定義結(jié)構(gòu)體指針變量 ps 并將 s 的地址賦給 ps
	printf("%s\t%d\t%s\t%s\n", ps->name, ps->age, ps->sex, ps->id);
	return 0;
}

注意:-> 操作符只能在已經(jīng)有結(jié)構(gòu)體指針的情況下才能使用。

到此這篇關(guān)于C語言超詳細(xì)講解指針與結(jié)構(gòu)體的文章就介紹到這了,更多相關(guān)C語言指針與結(jié)構(gòu)體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實(shí)現(xiàn)圖書管理系統(tǒng)

    C語言實(shí)現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++索引越界的解決方法

    C++索引越界的解決方法

    本文主要介紹了C++索引越界的解決方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語言對數(shù)組元素進(jìn)行冒泡排序的實(shí)現(xiàn)

    C語言對數(shù)組元素進(jìn)行冒泡排序的實(shí)現(xiàn)

    這篇文章主要介紹了C語言對數(shù)組元素進(jìn)行冒泡排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C語言中結(jié)構(gòu)體和共用體實(shí)例教程

    C語言中結(jié)構(gòu)體和共用體實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體和共用體的相關(guān)資料,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,共用體也叫聯(lián)合體,使幾個(gè)不同類型的變量共占一段內(nèi)存(相互覆蓋),需要的朋友可以參考下
    2021-06-06
  • C++基于控制臺(tái)實(shí)現(xiàn)的貪吃蛇小游戲

    C++基于控制臺(tái)實(shí)現(xiàn)的貪吃蛇小游戲

    這篇文章主要介紹了C++基于控制臺(tái)實(shí)現(xiàn)的貪吃蛇小游戲,實(shí)例分析了貪吃蛇游戲的原理與C++實(shí)現(xiàn)技巧,是非常經(jīng)典的游戲算法,需要的朋友可以參考下
    2015-04-04
  • C++實(shí)現(xiàn)LeetCode(116.每個(gè)節(jié)點(diǎn)的右向指針)

    C++實(shí)現(xiàn)LeetCode(116.每個(gè)節(jié)點(diǎn)的右向指針)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(116.每個(gè)節(jié)點(diǎn)的右向指針),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++利用循環(huán)和棧實(shí)現(xiàn)走迷宮

    C++利用循環(huán)和棧實(shí)現(xiàn)走迷宮

    這篇文章主要為大家詳細(xì)介紹了C++利用循環(huán)和棧實(shí)現(xiàn)走迷宮,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C++中構(gòu)造函數(shù)與析構(gòu)函數(shù)的詳解及其作用介紹

    C++中構(gòu)造函數(shù)與析構(gòu)函數(shù)的詳解及其作用介紹

    這篇文章主要介紹了C++中構(gòu)造函數(shù)與析構(gòu)函數(shù)的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C語言文件操作大全

    C語言文件操作大全

    這篇文章主要介紹了C語言文件操作大全的相關(guān)資料,需要的朋友可以參考下
    2018-03-03
  • Opencv實(shí)現(xiàn)拼圖板游戲

    Opencv實(shí)現(xiàn)拼圖板游戲

    這篇文章主要為大家詳細(xì)介紹了Opencv實(shí)現(xiàn)拼圖板小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

鲁甸县| 灵寿县| 双桥区| 江孜县| 南陵县| 关岭| 西华县| 巴青县| 裕民县| 和顺县| 宁阳县| 铜梁县| 余庆县| 泸西县| 杭锦后旗| 韶关市| 内江市| 尼木县| 丁青县| 汤原县| 诸暨市| 江阴市| 颍上县| 伽师县| 乌兰察布市| 南郑县| 普安县| 都匀市| 衡阳市| 竹溪县| 阜新市| 乐亭县| 红河县| 上杭县| 太谷县| 阿合奇县| 温宿县| 璧山县| 平昌县| 临邑县| 仲巴县|