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

C語言之初識(shí)指針

 更新時(shí)間:2021年12月15日 08:52:58   作者:靜有引力  
在C語言中,指針是一種保存變量地址的變量。這篇文章介紹了初識(shí)C語言指針,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

指針是什么?

那到底什么是指針呢,其實(shí)指針和之前學(xué)習(xí)的變量基本相似,不過變量里面放的是一些值,而指針里面放的是它所指的地方的地址。在聲明一個(gè)變量是,計(jì)算機(jī)就會(huì)為該變量預(yù)留一個(gè)位置,而指針?biāo)?的就是那個(gè)位置。

舉個(gè)例子:

int a = 10;//設(shè)置一個(gè)變量a的值為10

int *p = &a;//p這個(gè)指針里面就放的是a的地址

而&這個(gè)符號(hào),就是取地址符,就像我們?cè)谑褂胹canf函數(shù)時(shí)? scanf("%d",&a); 這個(gè)a前面的&是一個(gè)意思,就是獲取到某個(gè)變量的地址。

而當(dāng)你創(chuàng)建了一個(gè)指針是,你就要給他賦地址,否則的話它就會(huì)像那種鼠標(biāo)一樣在硬盤上亂找,就會(huì)隨機(jī)找個(gè)地址,所以我們?cè)趧?chuàng)建了指針時(shí),就一定要給他去給他賦一個(gè)位置。

指針的基礎(chǔ):

如何創(chuàng)建一個(gè)指針函數(shù)呢?

int p; 這是我們之前就知道的,創(chuàng)建一個(gè)整形變量p,而int *p;?就是設(shè)置一個(gè)指針p;關(guān)鍵就是在于中間的 *。所以我們?cè)趧?chuàng)建指針變量時(shí),一定不要忘記 *;

指針的賦值:

可以在創(chuàng)建指針的時(shí)候就賦值像這樣:int *p = &a;? 也可以在創(chuàng)建了之后單獨(dú)賦值像這樣: int *p;? ?p = &a;? ?兩種方法都一樣,沒有太大的區(qū)別,只不過一個(gè)一行代碼,一個(gè)兩行代碼,如果我們之前已經(jīng)創(chuàng)建了變量,那我們還是在創(chuàng)建指針的時(shí)候就直接給他賦值,以免后面忘了,對(duì)自己后續(xù)的程序發(fā)生影響。

那指針到底能干什么呢?

#include <stdio.h>
 
int main()
{
    int a = 10;
    int *p = &a;
    printf("a的地址為%p",&a);//這是直接輸出a的地址
    printf("a的地址為%p",p);//只是輸出p的指針?biāo)傅牡刂?
    printf("a的值為%d",*p);//輸出p的指針?biāo)傅牡刂分凶兞康闹?
 
    return 0;
}

通過這3個(gè)輸出函數(shù)我們可以知道,前兩個(gè)輸出的都是a的地址,而第三個(gè)輸出的則是a變量里的值。

所以我們可以理解為 *p 就是 a 這個(gè)變量的值,這就是最通俗易懂的理解了。

并且在輸出 p 時(shí)也就是輸出 a 的地址時(shí),也是有不同的輸出方式的,最基礎(chǔ)的就是

  • %lu 是十進(jìn)制的方式輸出;
  • %p是以十六進(jìn)制的方式輸出;

之前說到 *p 可以看作是它所指的 a 變量的值,所以它也是可以再重新被賦值的,當(dāng)然它的賦值不是給指針函數(shù)賦值,看似是在給指針賦值,其實(shí)改變的還是它所指的函數(shù)的值;

像這樣

int a,*p;
a = 10;
p = &a;
*p = 20;
printf("a = %d",*p);

這個(gè)函數(shù)所輸出的值就會(huì)為 20 ;因?yàn)橹羔樖侵g在你的地址上給你改變,所以說指針的改變相比較之前的函數(shù)就會(huì)方便很多,比如我們?cè)趯W(xué)習(xí)函數(shù)的時(shí)候,會(huì)將值從主函數(shù)傳到其他的函數(shù)中去做計(jì)算,但是傳回來時(shí)就很麻煩,因?yàn)樗淮沃荒軅骰貋硪粋€(gè)值,但是指針就不一樣了,它不需要將值傳回來,直接時(shí)實(shí)時(shí)將它所指的值進(jìn)行改變;

像接下來這個(gè)例子,我們之前也都用函數(shù)的方式寫過;

#include <stdio.h>
 
void swap(int* p, int* q)
{
	int temp;
	temp = *p;
	*p = *q;
	*q = temp;
 
}
int main()
{
	int a = 10, b = 20;
	swap(&a, &b);
	printf("a=%d  b=%d",a,b);
 
	return 0;
}

這個(gè)函數(shù)最后輸出的值為

可以看到,輸出的值已經(jīng)發(fā)生了交換,這就是指針的強(qiáng)大之處吧;

可以更簡單的來解決我們之前遇到的問題,所以說,學(xué)好指針是學(xué)好c語言的基礎(chǔ)!

到此這篇關(guān)于C語言之初識(shí)指針的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C與匯編混合編程的實(shí)現(xiàn)示例

    C與匯編混合編程的實(shí)現(xiàn)示例

    本文主要介紹了C與匯編混合編程的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Qt利用QJson實(shí)現(xiàn)解析數(shù)組的示例詳解

    Qt利用QJson實(shí)現(xiàn)解析數(shù)組的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Qt如何利用QJson實(shí)現(xiàn)解析數(shù)組功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定幫助,需要的小伙伴可以了解一下
    2022-10-10
  • 基于Matlab實(shí)現(xiàn)多目標(biāo)粘液霉菌算法的示例代碼

    基于Matlab實(shí)現(xiàn)多目標(biāo)粘液霉菌算法的示例代碼

    多目標(biāo)粘液霉菌算法(MOSMA),這是最近開發(fā)的粘液霉菌算法(SMA)的多目標(biāo)變體,用于處理工業(yè)中的多目標(biāo)優(yōu)化問題。本文將用Matlab實(shí)現(xiàn)這一算法,需要的可以參考一下
    2022-05-05
  • C++?JSON庫?nlohmann::basic_json::accept的用法解析

    C++?JSON庫?nlohmann::basic_json::accept的用法解析

    nlohmann::basic_json::accept 是 Nlohmann JSON 庫中的一個(gè)方法,它用于檢查一個(gè)字符串是否可以解析為有效的 JSON,這篇文章主要介紹了C++?JSON庫nlohmann::basic_json::accept的用法,需要的朋友可以參考下
    2023-06-06
  • C語言中計(jì)算字符串長度與分割字符串的方法

    C語言中計(jì)算字符串長度與分割字符串的方法

    這篇文章主要介紹了C語言中計(jì)算字符串長度與分割字符串的方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • C++破壞MBR的代碼

    C++破壞MBR的代碼

    這篇文章主要介紹了C++破壞MBR的代碼,涉及到對(duì)硬盤的主引導(dǎo)記錄的破壞性操作,具有一定的參考價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C語言中關(guān)于動(dòng)態(tài)內(nèi)存分配的詳解

    C語言中關(guān)于動(dòng)態(tài)內(nèi)存分配的詳解

    動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存。棧上分配的內(nèi)存是由系統(tǒng)分配和釋放的,空間有限,在復(fù)合語句或函數(shù)運(yùn)行結(jié)束后就會(huì)被系統(tǒng)自動(dòng)釋放而堆上分配的內(nèi)存則不會(huì)有這個(gè)問題。
    2021-09-09
  • C++中將string類型轉(zhuǎn)化為int類型

    C++中將string類型轉(zhuǎn)化為int類型

    本文主要介紹了C++中將string類型轉(zhuǎn)化為int類型的方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • VS C++頭文件引用提示“未定義標(biāo)識(shí)符”的問題解決

    VS C++頭文件引用提示“未定義標(biāo)識(shí)符”的問題解決

    本文主要介紹了VS C++頭文件引用提示“未定義標(biāo)識(shí)符”的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 基于make命令與makefile文件詳解

    基于make命令與makefile文件詳解

    下面小編就為大家分享一篇基于make命令與makefile文件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評(píng)論