指針就是指向內(nèi)存的某個地址的一個變量。
創(chuàng)新互聯(lián)是專業(yè)的新洲網(wǎng)站建設(shè)公司,新洲接單;提供成都網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新洲網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
結(jié)構(gòu)體指針就是這個指針變量的值必須指向存放該結(jié)構(gòu)體的內(nèi)存位置。
當(dāng)這個指針沒有任何指向時,可以賦值為null值,但是改指針不可使用,程序中應(yīng)該做判斷。下面是一些賦值演示。
struct student{
int id;
int score;
} aaa;
struct student *p = null;//結(jié)構(gòu)體指針p初始化賦值為null
struct student *p2=aaa;//p2指向aaa
struct student *p3=(struct student *)malloc(sizeof(struct student));//內(nèi)存中申請一個結(jié)構(gòu)體空間,并將地址強制轉(zhuǎn)換為結(jié)構(gòu)體指針變量賦值給p3
你這樣想說明你還沒有真正理解內(nèi)存和指針。int
a;表示編譯器隨機取出一個空閑的地址分配給a,不妨設(shè)為00000000,長度為sizeof(int),不同編譯器可能不同。int
*p;也表示隨機取出一個空閑的地址分配給p,不妨設(shè)為000000f0,長度一般為4個字節(jié),則這四個字節(jié)現(xiàn)在存儲的內(nèi)容是不確定的,假設(shè)為00000ff0,那么*p表示地址00000ff0上的值。*p=a則把地址00000ff0的值變?yōu)閍的值,顯然如果該地址目前正在被某個進(jìn)程使用,就有可能破壞該進(jìn)程,因此這種方法是十分危險的。給指針賦值一般有兩種方法,一種是將已經(jīng)存在的變量的地址傳遞給指針,格式為:p=a;另一種是首先為指針申請指向的合法內(nèi)存,C語言中用函數(shù)malloc(),然后給已申請的地址賦值,如*p=6。
1、指針變量的賦值,分為定義時賦值(初始化)和單獨賦值,如:
int x ;
int * px=x ; //定義時賦值,也稱初始化,注意這里的*是跟隨int的,即變量px是int *類型變量! 實際上的賦值語句是px=x ;
int * py ;
py=x ; //單獨賦值,將py指向x
*py=10 ; //這里的*,是引用指針中的數(shù)據(jù)操作符,*跟隨的變量必須是指針類型變量,否則會出錯! *py就是x,這里相當(dāng)于x=10;
2、指針變量作為函數(shù)的參數(shù)時,子函數(shù)可以通過指針引用實參地址中的數(shù)據(jù),達(dá)到修改實參地址中的數(shù)據(jù)。如:
#include stdio.h
void func( int a, int b, int *pmax )
{
if ( ab ) *pmax=a;
else *pmax=b ;
}
void main()
{
int a=2,b=3,max=0;
func(a,b,max ); //這里將變量max的地址傳遞到子函數(shù),子函數(shù)中通過該地址,可以修改max的值,達(dá)到子函數(shù)結(jié)束后,max能帶回運算結(jié)果的效果。
printf("max=%d\n", max );
}
都不知道你的程序要表達(dá)神馬意思,是查找子串還是查找字符,還是比較字符。
子函數(shù)是比較字符串,主函數(shù)只輸入字符,輸出字符。
return
source[i];
錯誤,
這里是返回字符,但是函數(shù)要求返回指針。即
source+i,但是scource是const變量。所以用強轉(zhuǎn)
return
(char
*)(source+i);
source=getchar();
/////////輸入字符不能賦予指針。只能地址,要賦值就
*source=getchar();
chars=getchar();
///同理
改成:
*source=getchar();
*chars=getchar();
之后記得開辟空間,就算是字符也得要開辟一個。
后面不能再用find_
==
NULL判斷了,因為find_不會指向NULL的了
gets()
錯誤
///////////////////////////////////////
//////
///////////////////////////////////////
1、變量的指針就是變量的地址。存放變量地址的變量是指針變量。即在C語言中,允許用一個變量來存放指針,這種變量稱為指針變量。因此,一個指針變量的值就是某個變量的地址或稱為某變量的指針。
2、為了表示指針變量和它所指向的變量之間的關(guān)系,在程序中用“*”符號表示“指向”。
3、定義指針變量.對指針變量的定義包括三個內(nèi)容:指針類型說明,即定義變量為一個指針變量和指針變量名的基本形式類型說明符*變量名。
4、int i,j;表示i,j是一個指針變量,它的值是某個整型變量的地址。或者說i,j指向一個整型變量。至于i、j究竟指向哪一個整型變量,應(yīng)由向i,j賦予的地址來決定。
5、int *s是指向整型變量的指針變量,float *d是指向浮點變量的指針變量,char *g;是指向字符變量的指針變量。應(yīng)該注意的是,一個指針變量只能指向同類型的變量,如s只能指向浮點變量,不能時而指向一個浮點變量,時而又指向一個字符變量。
6、指針變量的引用,指針變量同普通變量一樣,使用之前不僅要定義說明,而且必須賦予具體的值。未經(jīng)賦值的指針變量不能使用,否則將造成系統(tǒng)混亂,甚至死機。
在四個子函數(shù)中有,各是各的,互不干涉,所以main()中的這四個數(shù)組始終沒有被賦值過,空指針指的就是這個 應(yīng)該把這四個數(shù)組的首地址作為四個read()的參數(shù)傳過去,就可以實現(xiàn):“在子函數(shù)中賦值,在main函數(shù)中使用
網(wǎng)站欄目:c語言函數(shù)指針賦值方法,c語言函數(shù)指針賦值方法是什么
轉(zhuǎn)載源于:http://chinadenli.net/article28/hecgjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、做網(wǎng)站、服務(wù)器托管、域名注冊、ChatGPT、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)