C語言中的字符指針-創(chuàng)新互聯(lián)

目錄
  • 1.字符指針指向一個(gè)字符
  • 2.字符指針指向一個(gè)字符串
  • 3.例題

在左云等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),左云網(wǎng)站建設(shè)費(fèi)用合理。1.字符指針指向一個(gè)字符
int main()
{char ch = 'w';
  char *pc = &ch;
  return 0;
}

將一個(gè)char類型的變量的地址放到一個(gè)char*類型的指針里去,這里的char*ps就是字符指針
在這里的字符指針與之前的整形指針等的用法基本相同,不多做介紹


2.字符指針指向一個(gè)字符串

字符指針不但可以指向一個(gè)字符,并且還可以指向一個(gè)字符串
如下代碼:

int main()
{char* pstr = "abcdef";//這里是把一個(gè)字符串放到pstr指針變量里了嗎?
  return 0;
}

接下來我們可以分析:

  • "abcdef"是一個(gè)字符串,它占7個(gè)字節(jié)空間(因?yàn)楹竺孢€有一個(gè)看不見的\0),而pstr只是一個(gè)指針類型,它只有4或8個(gè)字節(jié)大小,7個(gè)字節(jié)大小的內(nèi)容是不可能放zh到4個(gè)字節(jié)大小的指針中的。
  • 所以char* pstr = "abcdef"的意思?jí)焊筒皇前?code>abcedf放到pstr里去

這里實(shí)際上是把字符串"abcdef"首字符a的地址放到pstr里去
如下圖:
在這里插入圖片描述
接下來,我們可以使用字符指針,對(duì)字符串進(jìn)行輸出,因?yàn)檩敵龅淖址枰獙?code>%s類型,并且pstr里存的已經(jīng)是字符串的首字符的地址了,所以可以直接輸出字符串,代碼如下:

int main()
{char* pstr = "abcdef";
	printf("%s\n", pstr);
	return 0;
}

輸出結(jié)果:
在這里插入圖片描述

因?yàn)?code>pstr的類型是字符指針,可以存放單獨(dú)的字符,可以對(duì)單獨(dú)字符進(jìn)行操作,所以可以通過指向字符串的字符指針對(duì)字符串內(nèi)任一個(gè)字符進(jìn)行操作,這里可以使用指針與int類型的加減實(shí)現(xiàn)

int main()
{char* pstr = "abcdef";
	printf("%c\n", *pstr); //這里pstr里存放的就是a的地址,直接解引用輸出就是a
	printf("%c\n", *(pstr + 1));//這里指針加1,使指針指向下一個(gè)字符b,再解引用,輸出b
	return 0;
}

輸出結(jié)果:
在這里插入圖片描述
這里的指向字符串的字符指針實(shí)際上與數(shù)組有些類似,還可以使用數(shù)組的形式取出字符

int main()
{char* pstr = "abcdef";
	printf("%c\n", pstr[1]);
	return 0;
}

輸出結(jié)果:
在這里插入圖片描述

這里可以看到printf("%c\n", *(pstr + 1))語句與printf("%c\n", pstr[1])的效果一樣,都是輸出字符串內(nèi)的第二個(gè)字符
可以得出一個(gè)結(jié)論:
如果a是一個(gè)字符串或數(shù)組的首元素地址,x是一個(gè)整數(shù)(大小小于數(shù)組或字符串長度減1),*(a+x)a[x]是等價(jià)的

這里的代碼其實(shí)不夠標(biāo)準(zhǔn):
因?yàn)槭菍⒊A孔址苯哟娴阶址羔樦?,常量字符串是不能被修改的,如果后面有代碼通過字符指針修改常量字符串,則程序會(huì)崩潰
所以最好是寫成這樣:const char* pstr ="abcdef"


3.例題
//輸出結(jié)果是什么?
#includeint main()
{char str1[] = "hello world.";
  char str2[] = "hello world.";
  const char *str3 = "hello world.";
  const char *str4 = "hello world.";
  if(str1 ==str2)
  	printf("str1 and str2 are same\n");
  else
	printf("str1 and str2 are not same\n");
  
  if(str3 ==str4)
	printf("str3 and str4 are same\n");
  else
	printf("str3 and str4 are not same\n");
  
  return 0;
}
  • 在進(jìn)行char str1[] = "hello world."char str2[] = "hello world."兩句時(shí),會(huì)建立兩個(gè)相互獨(dú)立的空間,數(shù)組名表示數(shù)組首元素地址,所以str1!=str2

  • 在這里插入圖片描述

  • 在進(jìn)行const char *str3 = "hello world."和·const char *str4 = "hello world.",因?yàn)?code>"hello world."是常量字符串,常量字符串是不可以被修改的,所以沒有必要在內(nèi)存中存兩分,所以str3==str4

  • 在這里插入圖片描述


你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:C語言中的字符指針-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://www.muchs.cn/article20/dhccco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、ChatGPTApp設(shè)計(jì)品牌網(wǎng)站建設(shè)、網(wǎng)站排名、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)