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

C語言中各類指針的用法(小結(jié))

 更新時(shí)間:2020年02月01日 14:53:33   作者:DreamColors  
這篇文章主要介紹了C語言中各類指針的用法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、指針的大小

二、野指針和空指針

#include <stdio.h>
int main(void)
{
	int a = 6;
	int* p;
	p = a;//把a(bǔ)的值賦給指針變量p,p為野指針,這樣做不會(huì)出現(xiàn)啥問題,但是沒什么意義
 
	p = 0x456;//為指針變量p賦值,p為野指針,這樣做不會(huì)出現(xiàn)啥問題,但是沒什么意義
 
	*p = 100;//操作野指針指向未知區(qū)域,內(nèi)存會(huì)出問題,報(bào)錯(cuò)。
	return 0;
}

但是,野指針和有效指針變量保存的都是數(shù)值,為了標(biāo)志此指針變量沒有指向任何變量(空閑可用),C語言中,可以把NULL賦值給此指針,這樣就標(biāo)志此指針為空指針,沒有任何指針。

int* p = NULL;

說明:野指針指向一個(gè)未知的空間,程序中允許存在野指針。操作系統(tǒng)將0到255作為系統(tǒng)占用不允許訪問操作,操作野指針對(duì)應(yīng)的內(nèi)存空間可能會(huì)報(bào)錯(cuò)。

#include <stdio.h>
int main(void)
{
	//空指針是指內(nèi)存地址編號(hào)為0的空間
	int* p = NULL;
	//操作空指針對(duì)應(yīng)的空間一定會(huì)報(bào)錯(cuò)
 
	*p = 6; //這樣寫會(huì)報(bào)錯(cuò)
	printf("%d\n", *p);
 
	return 0;
 
	
}

三、萬能指針void*

void*指針可以指向任意變量的內(nèi)存空間:

#include <stdio.h>
int main(void)
{
	//void* p = NULL;
	void* p;
	int a = 6;
	p = (void*)&a; //指向變量時(shí)最好轉(zhuǎn)換為void*
 
	//使用指針變量指向內(nèi)存時(shí),轉(zhuǎn)換為int*
	*((int*)p) = 10; //把a(bǔ)的值修改為10
             //在通過萬能指針修改變量的值時(shí),需要找到變量對(duì)應(yīng)的指針類型。
	//printf("%p\n", p);
	printf("a = %d\n", a);
 
	return 0;
}

程序執(zhí)行結(jié)果:

萬能指針可以接收任意類型變量的內(nèi)存地址。

void* p = &a;

四、const修飾的指針變量

(1)const修飾指針類型

const int* p = &a;

這種情況:可以修改指針變量的值,不可以修改指針指向的內(nèi)存空間的值。

#include <stdio.h>
int main(void)
{
	int a = 3;
	int b = 6;
	const int* p = &a; //p1的初始值是a的地址
	p = &b; //把b的地址賦給p1,即改變p1的值(這是可行的)
	*p = 15; //報(bào)錯(cuò),提示表達(dá)式必須是可修改的左值,因?yàn)椴豢梢孕薷闹羔樦赶虻膬?nèi)存空間的值(a的值)。
	
	printf("%p\n", p); //打印出的p1的值是b的地址,即可以修改指針變量的值。
 
	return 0;
}

(2)const修飾指針變量

int* const p = &a;

這種情況:可以修改指針指向的內(nèi)存空間的值,不可以修改指針變量的值。

#include <stdio.h>
int main(void)
{
	int a = 3;
	int b = 6;
 
	int* const p = &a;
	*p = 100;
	p = &b;//報(bào)錯(cuò),提示:表達(dá)式必須是可修改的左值。即不可以修改指針變量的值
 
	printf("%d\n", a);//打印出的a的值為100,即可以修改指針指向的內(nèi)存空間的值
 
	return 0;
}

(3)const修飾指針變量和指針類型

const int* const p = &a;

我們知道在這種情況下,既不可以修改指針指向的內(nèi)存空間的值,也不可以修改指針變量的值。但是我們?nèi)阅芡ㄟ^二級(jí)指針來修改指針指向的內(nèi)存空間的值和指針變量的值。

#include <stdio.h>
int main(void)
{
	int a = 2;
	int b = 6;
 
	const int* const p = &a;
	int** pp = &p;
 
	**pp = 100;  //把100賦值給a,即通過二級(jí)指針可以修改a的值,const不起作用了
	printf("%d\n", *p); //打印出的a的值為100
 
	*pp = &b;  //把b的地址賦值給p,通過二級(jí)指針可以改變p的值,const不起作用了
	printf("%d\n", *p);//打印出的是b的值,即6
 
	return 0;
}

這也說明了const存在一定的不安全性。

五、指針的加法運(yùn)算

(1)指針計(jì)算不是簡(jiǎn)單的整數(shù)相加。

(2)如果是一個(gè)int*,+1的結(jié)果是增加一個(gè)int的大小。

(3)如果是一個(gè)char*,+1的結(jié)果是增加一個(gè)char的大小。

指針的減法運(yùn)算是類似的,很容易理解。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++制作《游戲內(nèi)存外掛》詳解

    C++制作《游戲內(nèi)存外掛》詳解

    這篇文章主要介紹了C++制作《游戲內(nèi)存外掛》詳解,文中通過示例代碼和圖片介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C語言楊輝三角兩種實(shí)現(xiàn)方法

    C語言楊輝三角兩種實(shí)現(xiàn)方法

    大家好,本篇文章主要講的是C語言楊輝三角兩種實(shí)現(xiàn)方法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • FFmpeg實(shí)現(xiàn)多線程編碼并保存mp4文件

    FFmpeg實(shí)現(xiàn)多線程編碼并保存mp4文件

    這篇文章主要為大家介紹了FFmpeg如何持續(xù)的從指定內(nèi)存中讀取原始數(shù)據(jù),再將解碼數(shù)據(jù)存入隊(duì)列中,并通過單獨(dú)的線程進(jìn)行編碼,最后保存為mp4文件,感興趣的可以了解下
    2023-08-08
  • 利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例

    利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例

    今天小編就為大家分享一篇關(guān)于利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 基于C++中setiosflags()的用法詳解

    基于C++中setiosflags()的用法詳解

    下面小編就為大家?guī)硪黄贑++中setiosflags()的用法詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • C語言實(shí)現(xiàn)的猴子偷桃之類算法

    C語言實(shí)現(xiàn)的猴子偷桃之類算法

    本文給大家分享的是前些日子去面試的時(shí)候的試題,哎,真是沒想到會(huì)出這么個(gè)題,好多年沒碰過C了。。。。分享給大家,小伙伴們過來參觀下吧。
    2015-03-03
  • c++如何將一個(gè)char轉(zhuǎn)化為string

    c++如何將一個(gè)char轉(zhuǎn)化為string

    這篇文章主要介紹了c++如何將一個(gè)char轉(zhuǎn)化為string問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)

    C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言開發(fā)實(shí)現(xiàn)通訊錄管理系統(tǒng)

    C語言開發(fā)實(shí)現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言開發(fā)實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++實(shí)現(xiàn)LeetCode(155.最小棧)

    C++實(shí)現(xiàn)LeetCode(155.最小棧)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(155.最小棧),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

华坪县| 阳新县| 七台河市| 突泉县| 泾川县| 化德县| 大洼县| 崇州市| 梁平县| 金沙县| 灵宝市| 额济纳旗| 库车县| 凤山市| 苍溪县| 鄂托克前旗| 万山特区| 大英县| 新安县| 玛沁县| 九江市| 汽车| 措美县| 瑞丽市| 科技| 岳西县| 朔州市| 奇台县| 宣化县| 彭水| 乐山市| 道孚县| 怀远县| 萨迦县| 韶山市| 开阳县| 大化| 普兰县| 桐柏县| 泰和县| 昌乐县|