欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言清楚了解指針的使用

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

前言

經(jīng)過了指針的初步學習,我們了解了指針有以下特點:

1. 指針就是個變量,用來存放地址,地址唯一標識一塊內存空間。

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

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

4. 指針的運算。

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

字符指針

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

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

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

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

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

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

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

當我們如上圖代碼一樣,試圖改變常量字符串時就會報錯:

讓我們來通過下面的代碼了解內部的邏輯:

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ù)代碼和運行結果,我們可以知道指針指向的常量字符串的地址是相同的,但把字符串賦予數(shù)組時,地址不同,讓我們用圖來描述這個過程。

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

指針數(shù)組

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

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

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

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

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

數(shù)組指針

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

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

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;
}

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

函數(shù)指針

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

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

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

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

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

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

相關文章

  • C++用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題詳細總結

    C++用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題詳細總結

    以下是對C++中用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • C++中map和vector作形參時如何給定默認參數(shù)?

    C++中map和vector作形參時如何給定默認參數(shù)?

    今天小編就為大家分享一篇關于C++中map和vector作形參時如何給定默認參數(shù)?,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • C++之CNoTrackObject類和new delete操作符的重載實例

    C++之CNoTrackObject類和new delete操作符的重載實例

    這篇文章主要介紹了C++之CNoTrackObject類和new delete操作符的重載實例,是C++程序設計中比較重要的概念,需要的朋友可以參考下
    2014-10-10
  • c++11中regex正則表達式示例簡述

    c++11中regex正則表達式示例簡述

    這篇文章主要給大家介紹了關于c++11中regex正則表達式的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c++11具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • C++中的多態(tài)詳談

    C++中的多態(tài)詳談

    多態(tài)通俗來說就是多種形態(tài),本文通過實例代碼給大家介紹C++中的多態(tài)定義及實現(xiàn),通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-05-05
  • C++定時器Timer在項目中的使用方法

    C++定時器Timer在項目中的使用方法

    這篇文章主要給大家介紹了關于C++定時器Timer在項目中的基本使用方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • C語言:傳值與傳址交換整數(shù)

    C語言:傳值與傳址交換整數(shù)

    這篇文章主要給大家介紹了關于C語言中傳值與傳址之間交換整數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C語言具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2021-08-08
  • C++11中多線程編程-std::async的深入講解

    C++11中多線程編程-std::async的深入講解

    這篇文章主要給大家介紹了關于C++11中多線程編程-std::async的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    這篇文章主要介紹了Qt利用Qchart組件展示數(shù)據(jù)庫中的歷史數(shù)據(jù)。文中的示例代碼講解清晰,具有一定的學習和工作價值,感興趣的小伙伴可以學習一下
    2021-12-12
  • C++實現(xiàn)快捷店會員管理系統(tǒng)

    C++實現(xiàn)快捷店會員管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)快捷店會員管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論