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

帶你分分鐘玩轉(zhuǎn)C語(yǔ)言指針

 更新時(shí)間:2022年06月08日 16:28:10   作者:Huterox  
c語(yǔ)言指針其實(shí)是一個(gè)整形變量,與其它數(shù)據(jù)不同的是,它的作用是用來(lái)存儲(chǔ)其它變量的地址,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言指針的相關(guān)資料,需要的朋友可以參考下

何為指針

指針這玩意說(shuō)白了,就是用來(lái)存儲(chǔ)一個(gè)變量地址的東東 如圖:

(編輯器為vc2010)

#include<stdio.h>
void main(){
	int a,*p;
	a=5;
	p=&a;
	printf("a=%d,p=%p,*p=",a,p,*p);
	getchar();

}

所以通過(guò)剛剛的情況,我們發(fā)現(xiàn)通過(guò)指針我們不僅可以獲取一個(gè)變量的值還可以直接對(duì)變量的值修改

又如下面的例子:

#include<stdio.h>
void main(){
	int a=3;
	int* prt;
	prt=&a;
	printf("a的值為%d\na的地址為%p\nprt存放的值為%p\nprt的內(nèi)存地址為%p\nprt所存的地址對(duì)應(yīng)的值為%d",a,&a,prt,&prt,*prt);
	getchar();

}

數(shù)組指針

說(shuō)到指針只說(shuō)基本的int char float有什么意思,接下來(lái)是一個(gè)數(shù)組指針 將數(shù)組和指針結(jié)合起來(lái).當(dāng)然數(shù)組本身在傳遞的時(shí)候就是以指針傳遞的. 下面是以段代碼演示

#include<stdio.h>
void main(){
	int a [5]={1,2,3,4,5},*p,i;
	p = a;
	for(i=0;i<5;i++){
		printf("&a[%d]=%p,a[%d]=%d\n",i,p,i,p[i]);
	
	}
	getchar();
}

我們發(fā)現(xiàn)當(dāng)p=a(指針指向數(shù)組a)后,指針p可以和數(shù)組a一樣操作,這就是指針數(shù)組.

指針數(shù)組

既然說(shuō)到了指針數(shù)組那么就不得不說(shuō)數(shù)組指針,乍一看這兩個(gè)名字很像,其實(shí)差距還是很大的. int *p[] 下面還是以上面的例子為例,我們讓輸出結(jié)果一致

#include<stdio.h>
void main(){
	int a [5]={1,2,3,4,5},*p[5],i;
	for(i=0;i<5;i++){
		p[i]=&a[i];
	}
	for(i=0;i<5;i++){
		printf("&a[%d]=%p,a[%d]=%d\n",i,p[i],i,*p[i]);
	
	}
	getchar();
}

我們發(fā)現(xiàn),這個(gè)東東其實(shí)就是一個(gè)存儲(chǔ)地址的數(shù)組,這個(gè)內(nèi)存地址既可以是int char 或者float 同時(shí)也可以是數(shù)組,這個(gè)我們?cè)谡f(shuō)完字符串?dāng)?shù)組后再說(shuō).

字符串?dāng)?shù)組

C語(yǔ)言里面沒(méi)有string類(java)也沒(méi)有str(python)只有字符,所以我們引入了字符串?dāng)?shù)組,用來(lái)存儲(chǔ)字符串. ('a' 一個(gè)字節(jié) "a"兩個(gè)字節(jié)) 這里要注意一下的是,一個(gè)字符串?dāng)?shù)組如 char a[5]="hello",表面上看這里只有五個(gè)字符,但是其實(shí)在他們的內(nèi)存分布里面最后面結(jié)尾('o'后面)還有一個(gè)字符'\0'表示結(jié)束,所以只用char a[5]放不下hello,char a[6]="hello"才行.所以"a" 是'a'+'\0'兩個(gè)字節(jié)('\0'不顯示)

#include<stdio.h>
void main()
{
	char a[6]={'h','e','l','l','o'};
	//char a[6] ="hello";也行
	printf("%s",a);
	getchar();
}

此外還要注意一點(diǎn)直接寫(xiě)一個(gè)"hello"也是一個(gè)字符串?dāng)?shù)組只不過(guò)未命名罷了,我們可以用指針訪問(wèn)

#include<stdio.h>
void main()
{
	char *p="hello";
	printf("%s\n",p); //%s 會(huì)讀取第一個(gè)字符的地址知道讀到'\0'
	printf("%c",p[1]);//輸出字母e
	getchar();
}

數(shù)組指針的sao氣操作

先看一段代碼

#include<stdio.h>
void main(){
	char *p[3]={
		"hello",
		"my",
		"friend"
	};
	printf("%s",p[1]);
	getchar();
	
}

現(xiàn)在我們發(fā)現(xiàn)p[1]可以和一個(gè)字符指針一樣操作,也就是說(shuō) p[1]等價(jià)于

char a[4]="my",*c; c=a; 這里的c就等價(jià)于p[1]

#include<stdio.h>
void main(){
	char *p[3]={
		"hello",
		"my",
		"friend"
	};
	int i;
	for(i=0;i<2;i++)
	{
		printf("%c\n",p[1][i]);
	}
	getchar();
}

二級(jí)指針

這個(gè)家伙,就是套娃,看一張圖就明白了

函數(shù)指針

int (*p)( int x) int 指向的函數(shù)類型 (*p)指針名字 (int x) 所指向的函數(shù)所需要輸入的參數(shù)

這個(gè)呢就是一個(gè)函數(shù) 舉個(gè)例子

#include<stdio.h>
void main(){
	int go(int x);
	int x,(*p)(int x);
	scanf("%d",&x);
	p=go;//指針指向函數(shù)
	//(*p)(x)也行
	p(x);
	getchar();
	getchar();
}

int go(int x)
{
	printf("you input number is:%d",x);
}

這玩意的好處是啥呢, 有了這玩意,我可以直接向一個(gè)函數(shù)里面?zhèn)鬟f另一個(gè)函數(shù) 舉例升級(jí)

#include<stdio.h>
void main(){

	int go(int x),x;
	void show(int x, int(*p)(int x));

	scanf("%d",&x);
	show(x,go);
	getchar();
	getchar();
}

int go(int x)
{
	printf("you input number is:%d",x);
}
void show(int x, int(*p)(int x)){
	printf("you have inputed!\n");
	p(x);

}

指針函數(shù)

說(shuō)白了這就是一個(gè)函數(shù),返回了一個(gè)地址如:

int* go (int* x,int* y)

和函數(shù)指針長(zhǎng)得像,原因在于* 得運(yùn)算級(jí)別比()低所以函數(shù)指針加了() 舉個(gè)例子

#include<stdio.h>
void main(){
	
	int *go(int *x);
	int a=5,*p;
	p=go(&a);
	printf("a的地址為:%p,值為:%d",p,*p);
	getchar();
}

int *go(int *x){
	printf("地址以獲取\n");
	return x;
}

文件指針

這個(gè)就有意思了,C語(yǔ)言把所有的設(shè)備都視為指針. FILE *fp=NULL; fp = fopen("文件路徑","w") ("w"是打開(kāi)模式,w寫(xiě)) fprintf(fb,"%s",str) 這玩意和print的用法是一樣的只不過(guò)前面指明了指針 換句話說(shuō) printf("hello) 與 fprintf(stdout,"hello")一樣,stdout屏幕指針,stdin鍵盤(pán)指針 同理 fputs("hello",fp)

接下來(lái)是讀文件 char s[100] fp = fopen("文件路徑","r")
fscanf(fp,"%s",s) fgets(s,100,fp) (100是最大長(zhǎng)度) 區(qū)別是什么呢,fprintf()讀到空格或回車就返回,fgets()讀到回車返回 此外還要fread() fread(接收數(shù)據(jù)的地址,讀取多少字節(jié)的內(nèi)容,數(shù)據(jù)項(xiàng)個(gè)數(shù),文件指針) 其他的查手冊(cè)就好 最后別忘了關(guān)閉 fclose(fp)

總結(jié)

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

相關(guān)文章

  • OpenCV視頻流C++多線程處理方法詳細(xì)分析

    OpenCV視頻流C++多線程處理方法詳細(xì)分析

    為OpenCV是搞計(jì)算機(jī)視覺(jué)必須要掌握的基礎(chǔ),這篇文章主要給大家介紹了關(guān)于OpenCV視頻流多線程處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • C語(yǔ)言指針入門(mén)學(xué)習(xí)面面觀

    C語(yǔ)言指針入門(mén)學(xué)習(xí)面面觀

    這篇文章主要介紹了C語(yǔ)言指針的一些基礎(chǔ)知識(shí),指針可以說(shuō)是C語(yǔ)言入門(mén)學(xué)習(xí)中的頭等大事,文中從數(shù)組和函數(shù)等多方面剖析C中指針的作用,需要的朋友可以參考下
    2016-02-02
  • C語(yǔ)言?typedef的用法示例詳解

    C語(yǔ)言?typedef的用法示例詳解

    typedef是在C和C++編程語(yǔ)言中的一個(gè)關(guān)鍵字,作用是為現(xiàn)有的數(shù)據(jù)類型(int、float、char……)創(chuàng)建一個(gè)新的名字,目的是為了使代碼方便閱讀和理解,這篇文章主要介紹了C語(yǔ)言typedef的使用,需要的朋友可以參考下
    2023-06-06
  • C/C++寬窄字符轉(zhuǎn)換與輸出的多種實(shí)現(xiàn)方法

    C/C++寬窄字符轉(zhuǎn)換與輸出的多種實(shí)現(xiàn)方法

    本文主要介紹了C/C++寬窄字符轉(zhuǎn)換與輸出的多種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • VS2022 Git提交代碼的實(shí)現(xiàn)

    VS2022 Git提交代碼的實(shí)現(xiàn)

    本文主要介紹了VS2022 Git提交代碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++控制結(jié)構(gòu)詳情

    C++控制結(jié)構(gòu)詳情

    這篇文章主要介紹了C++控制結(jié)構(gòu)詳情,C++的控制結(jié)構(gòu)和其它編程語(yǔ)言類似包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),更多相關(guān)資料需要的小伙伴可以參考下面文章內(nèi)容
    2022-03-03
  • C++ STL入門(mén)教程(1) vector向量容器使用方法

    C++ STL入門(mén)教程(1) vector向量容器使用方法

    這篇文章主要為大家詳細(xì)介紹了C++ STL入門(mén)教程第一篇,vector向量容器使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C語(yǔ)言實(shí)現(xiàn)推箱子小游戲

    C語(yǔ)言實(shí)現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 詳解C++之C++11的牛逼特性

    詳解C++之C++11的牛逼特性

    這篇文章主要介紹了C++之C++11的牛逼特性,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • 淺談C++ 設(shè)計(jì)模式的基本原則

    淺談C++ 設(shè)計(jì)模式的基本原則

    這篇文章主要介紹了++ 設(shè)計(jì)模式的基本原則,主要的目標(biāo)是實(shí)現(xiàn)最終目的,高內(nèi)聚,低耦合,開(kāi)放封閉原則類的改動(dòng)是通過(guò)增加代碼進(jìn)行的,感興趣的小伙伴可參考下面文章的具體內(nèi)容
    2021-09-09

最新評(píng)論