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

C語(yǔ)言清楚了解指針的使用

 更新時(shí)間:2022年06月23日 11:13:14   作者:JDSZGLLL  
C語(yǔ)言這門課程在計(jì)算機(jī)的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語(yǔ)言的學(xué)習(xí),對(duì)指針的掌握是非常重要的,本文將具體針對(duì)指針的基礎(chǔ)做詳盡的介紹

前言

經(jīng)過了指針的初步學(xué)習(xí),我們了解了指針有以下特點(diǎn):

1. 指針就是個(gè)變量,用來存放地址,地址唯一標(biāo)識(shí)一塊內(nèi)存空間。

2. 指針的大小是固定的4/8個(gè)字節(jié)(32位平臺(tái)/64位平臺(tái))。

3. 指針是有類型,指針的類型決定了指針的+-整數(shù)的步長(zhǎng),指針解引用操作的時(shí)候的權(quán)限。

4. 指針的運(yùn)算。

今天將要從各種不同的指針的角度切入,使得我們對(duì)指針的了解更加深入。

字符指針

我們現(xiàn)在已經(jīng)學(xué)會(huì)下面的這種指針的使用了:

int main()
{
	char ch = 'w';
	char* pc = &ch;
	*pc = 'w';
	return 0;
}

通過這段代碼,把字符變量ch的地址賦給了pc,同時(shí)pc的類型是char*。

接下來讓我們來看一看另一段代碼:

int main()
{
const char* pstr = "hello bit.";//這里是把一個(gè)字符串放到pstr指針變量里了嗎?
printf("%s\n", pstr);
return 0;
}

我們看到,這里是把一個(gè)字符串常量和指針pstr關(guān)聯(lián)起來了。并且無(wú)論有沒有加const,常量的內(nèi)容是不能改變的。

int main()
{
	char* pstr = "hello bit.";//這里是把一個(gè)字符串放到pstr指針變量里了嗎?
	*pstr = 'w';
	printf("%s\n", pstr);
	return 0;
}

當(dāng)我們?nèi)缟蠄D代碼一樣,試圖改變常量字符串時(shí)就會(huì)報(bào)錯(cuò):

讓我們來通過下面的代碼了解內(nèi)部的邏輯:

int main()
{
char str1[] = "hello world.";
char str2[] = "hello world.";
const char *str3 = "hello world.";
const char *str4 = "hello world.";
if(str1 ==str2)
printf("str1 and str2 are same\n");
else
printf("str1 and str2 are not same\n");
if(str3 ==str4)
printf("str3 and str4 are same\n");
else
printf("str3 and str4 are not same\n");
return 0;
}

根據(jù)代碼和運(yùn)行結(jié)果,我們可以知道指針指向的常量字符串的地址是相同的,但把字符串賦予數(shù)組時(shí),地址不同,讓我們用圖來描述這個(gè)過程。

同時(shí)str1,str2,str3,str4,指的都是字符串首字符的地址。

指針數(shù)組

指針數(shù)組的本質(zhì)是數(shù)組,只是在數(shù)組中存放的內(nèi)容是指針變量。

接下來讓我們看看指針數(shù)組長(zhǎng)什么樣:

int* arr1[10]; //整形指針的數(shù)組
char *arr2[4]; //一級(jí)字符指針的數(shù)組
char **arr3[5];//二級(jí)字符指針的數(shù)組

指針數(shù)組可以類比普通數(shù)組,比如:

我們可以發(fā)現(xiàn),指針數(shù)組和普通數(shù)組的區(qū)別僅僅是數(shù)組中儲(chǔ)存的元素類型不一樣,所以說指針數(shù)組本質(zhì)上還是數(shù)組。

數(shù)組指針

說完了指針數(shù)組,讓我們來了解一下數(shù)組指針 ,數(shù)組指針本質(zhì)上是一個(gè)指針。接下來讓我們類比一下數(shù)組指針和我們常見的指針:

讓我們通過一段代碼來深入了解 數(shù)組指針的特點(diǎn):

int main()
{
	int arr[10] = { 0 };
	printf("arr = %p\n", arr);
	printf("&arr= %p\n", &arr);
	printf("arr+1 = %p\n", arr + 1);
	printf("&arr+1= %p\n", &arr + 1);
	return 0;
}

通過學(xué)習(xí)我們知道arr是數(shù)組首元素的地址,&arr是整個(gè)數(shù)組的地址,可類比為普通指針和數(shù)組指針。

函數(shù)指針

函數(shù)指針就是存放函數(shù)地址的指針 ,通過函數(shù)指針可以調(diào)用相應(yīng)的函數(shù)。

void test()
{
printf("hehe\n");
}
int main()
{
printf("%p\n", test);
printf("%p\n", &test);
return 0;
}

通過這段代碼我們了解到,函數(shù)是有地址的,那怎么把這個(gè)地址賦予指針呢?

void test()
{
	printf("hehe\n");
}
int main()
{
	printf("%p\n", test);
	printf("%p\n", &test);
	void (*p)() = test;
	(*p)();
	return 0;
}

以上代碼讓我們知道了,函數(shù)是可以通過指針調(diào)用的。

到此這篇關(guān)于C語(yǔ)言清楚了解指針的使用的文章就介紹到這了,更多相關(guān)C語(yǔ)言指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • C/C++ 中extern關(guān)鍵字詳解

    C/C++ 中extern關(guān)鍵字詳解

    這篇文章主要介紹了C/C++ 中extern關(guān)鍵字詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語(yǔ)言單鏈表實(shí)現(xiàn)方法詳解

    C語(yǔ)言單鏈表實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了C語(yǔ)言單鏈表實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了基于C語(yǔ)言的單鏈表定義、創(chuàng)建、添加、刪除、排序、打印等操作技巧,并附帶了相關(guān)的優(yōu)化算法,需要的朋友可以參考下
    2018-04-04
  • 詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員

    詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員

    這篇文章主要介紹了詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • C/C++的文件IO函數(shù)你知道嗎

    C/C++的文件IO函數(shù)你知道嗎

    這篇文章主要為大家詳細(xì)介紹了C/C++的文件IO函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 二維指針動(dòng)態(tài)分配內(nèi)存連續(xù)問題深入分析

    二維指針動(dòng)態(tài)分配內(nèi)存連續(xù)問題深入分析

    當(dāng)我們定義一個(gè)二維指針時(shí),如果需要存儲(chǔ)相應(yīng)的數(shù)據(jù),就需要我們動(dòng)態(tài)的分配內(nèi)存,這時(shí),有一點(diǎn)是需要注意的,分配內(nèi)存的方法不同,內(nèi)存的連續(xù)性也是不相同的
    2013-07-07
  • C語(yǔ)言深入探究棧的原理

    C語(yǔ)言深入探究棧的原理

    一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。進(jìn)行數(shù)據(jù)插入和刪除操作的一端 稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守后進(jìn)先出LIFO(Last In First Out)的原則
    2021-11-11
  • C++ map 根據(jù)value找key的實(shí)現(xiàn)

    C++ map 根據(jù)value找key的實(shí)現(xiàn)

    今天小編就為大家分享一篇C++ map 根據(jù)value找key的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Qt?QPainter的使用方法

    Qt?QPainter的使用方法

    QPainter是Qt的一個(gè)繪圖類,它的主要任務(wù)是在繪圖設(shè)備上進(jìn)行2D圖形渲染,本文主要介紹了Qt?QPainter的使用方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 最新評(píng)論

    高碑店市| 石景山区| 文山县| 九台市| 徐水县| 鹤壁市| 屏边| 阿拉善左旗| 敖汉旗| 呼玛县| 涿鹿县| 辽宁省| 页游| 镇赉县| 尼木县| 太仆寺旗| 东丰县| 贵州省| 常熟市| 尼木县| 金华市| 鸡泽县| 电白县| 太谷县| 独山县| 晋州市| 农安县| 永定县| 乌恰县| 阜康市| 和龙市| 望江县| 陇南市| 太谷县| 赤峰市| 长沙市| 贺兰县| 兴城市| 吉水县| 霞浦县| 施秉县|