六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦>學(xué)習(xí)英語>專業(yè)英語>計(jì)算機(jī)英語>

c語言指針的用法

時(shí)間: 長思709 分享
  大家都知道指針是C語言中的精粹,學(xué)好了指針基本就等于學(xué)號(hào)了C語言,它能直接對(duì)物理地址進(jìn)行訪問,具有雙重功能,是嵌入式設(shè)計(jì)中必不可少的一門語言。C語言功能強(qiáng)大的主要原因就是具有指針結(jié)構(gòu)。指針是一種特殊的數(shù)據(jù)類型,直接指向目標(biāo)的存儲(chǔ)地址,實(shí)現(xiàn)直接訪問對(duì)象存儲(chǔ)空間的功能。下面小編就來為大家介紹下c語言指針的用法。
  c語言指針的用法如下:
  下面談?wù)剮讉€(gè)指針中常見的問題:
  1.聲明指針和取指針變量所指向內(nèi)存空間的數(shù)據(jù)時(shí)所用到的 * 符號(hào)的意義
  如:
  int a;
  int *p=&a;??
  *p=3;
  在int *p=&a中 * 僅僅為了說明p是一個(gè)指向整形數(shù)據(jù)的變量,而在*p=3中 * 表示取p所指向內(nèi)存單元的數(shù)據(jù),即*p與a等價(jià);
  初學(xué)者容易犯下面這個(gè)錯(cuò)誤:
  比如寫一個(gè)交換函數(shù):
  void swap(int *a,int *b)
  {
  int *temp=*a;
  *a=*b;
  *b=*temp;
  }
  犯這種錯(cuò)誤的原因是由于對(duì) *的理解不深,a是一個(gè)指針變量,*a則表示取a所指單元的數(shù)據(jù),是一個(gè)int型變量,而int *temp中表示聲明了一個(gè)指針變量temp,兩者數(shù)據(jù)類型不匹配,因此在編譯時(shí)會(huì)報(bào)錯(cuò)。
  2.理解指針變量的含義
  很多情況下都是由于對(duì)指針變量的含義理解不透徹造成錯(cuò)誤。一個(gè)指針變量的含義表示它是指向一個(gè)內(nèi)存單元,其本身的值是內(nèi)存單元的地址,并不是所指內(nèi)存單元中所存的數(shù)據(jù)。
  很多初學(xué)者也很容易犯下面這種錯(cuò)誤,比如同樣是swap函數(shù):
  void swap(int *a,int *b)
  {
  int *temp;
  temp=a;
  a=b;
  b=temp;
  }
  犯這種錯(cuò)誤正是由于沒有理解指針變量的含義,錯(cuò)誤地認(rèn)為指針變量是所指單元的數(shù)據(jù)。上述代碼中僅僅只是交換了a,b,temp這三個(gè)指針變量,但是它們所指單元里的數(shù)據(jù)并沒有進(jìn)行交換,因此無法達(dá)到交換數(shù)據(jù)的目的。
  3.使用指針時(shí)會(huì)忽略的問題
  ?? 在深刻理解指針的含義之后,在使用指針的時(shí)候要特別注意,指針在沒有被賦值的時(shí)候,即沒有讓指針指向特定的內(nèi)存單元時(shí),不能用指針進(jìn)行操作。
  比如下面的代碼:
  char s1[10]="12345";
  char *p;
  strcpy(p,s1);
  printf("%s",p);
  這樣的代碼雖然在編譯時(shí)不會(huì)報(bào)錯(cuò),但是在運(yùn)行時(shí)是絕對(duì)不會(huì)通過的,因?yàn)榉噶艘粋€(gè)很嚴(yán)重的問題在 strcpy(p,s1) 中使用了指針p,但是在使用之前卻沒有對(duì)p賦值(即讓p指向特定的存儲(chǔ)單元),因此p的值是不確定的,無法將s1內(nèi)容復(fù)制到*p中,如果p指向的是存放系統(tǒng)數(shù)據(jù)的單元,則可能會(huì)造成程序崩潰。

c語言指針的用法

大家都知道指針是C語言中的精粹,學(xué)好了指針基本就等于學(xué)號(hào)了C語言,它能直接對(duì)物理地址進(jìn)行訪問,具有雙重功能,是嵌入式設(shè)計(jì)中必不可少的一門語言。C語言功能強(qiáng)大的主要原因就是具有指針結(jié)構(gòu)。指針是一種特殊的數(shù)據(jù)類型,直接指向目標(biāo)
推薦度:
點(diǎn)擊下載文檔文檔為doc格式
515340