指針實(shí)際就是實(shí)體的代表而已,不過(guò)指針是個(gè)實(shí)體的存放地址;可以進(jìn)行地址運(yùn)算;
創(chuàng)新互聯(lián)專(zhuān)注于黃石港企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。黃石港網(wǎng)站建設(shè)公司,為黃石港等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
如:p++,指針指向下一地址;p=q以q指針指向地址作為p指針的地址;
普通的用法是,聲明實(shí)體或?qū)嶓w數(shù)組,用指針指向?qū)嶓w的地址:實(shí)體 b,g[8],*p;
p=b;數(shù)組名稱(chēng)實(shí)際就是固定長(zhǎng)度的指針,所以常有:p=g;p=g+2相當(dāng)于p=g[2];
如函數(shù) void fun(int b[]);可以用int *p;fun(p)來(lái)調(diào)用;p代表數(shù)組b;
如函數(shù) void fun(int *p);可以用int b[6];fun(b)來(lái)調(diào)用;b相當(dāng)于指針p;
在我的系統(tǒng)中運(yùn)行你 的程序和你想的一樣,是8不是7.
string 1,string 2:
it's a boy
boy
offset 8 "boy"in"it's a boy"
所謂指針就是地址,只是指針會(huì)區(qū)別它是什么指針,對(duì)應(yīng)的數(shù)據(jù)占多大內(nèi)存。如subst,str都是char*類(lèi)型的,他們是字符指針,所以他們指向的類(lèi)型是字符。*str和str[0]的含義是一樣的,意思是取得首字符。在c語(yǔ)言中字符串就是用字符指針來(lái)表示的,對(duì)應(yīng)的是“%s”,而加上了*,是取這個(gè)字符指針地址的內(nèi)容,也就是一個(gè)字符,用“%c”表示。所以你打印的是字符串,就應(yīng)該用%s。
函數(shù)指針 就是指向函數(shù)的指針
比如
void?pr_int(int?a)//函數(shù)
{
printf("%d\n",a);
}
void?func(void?(*p)(int),?int?m)//函數(shù)指針做參數(shù)
{
p(m);//調(diào)用函數(shù)指針
}
int?main()
{
func(pr_int,?100);
return?0;
}
按照你的要求編寫(xiě)的C語(yǔ)言程序如下
includestdio.h
int?main()
{
int?a,b;
int?*p=a;
a=30;
printf("a=%d\n",*p);
p=b;
scanf("%d",p);
a=*p+24;
printf("a=%d,b=%d",a,b);
return?0;
}
運(yùn)行結(jié)果
a=30
76
a=100,b=76