国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè)正版軟件廣東網(wǎng)站營(yíng)銷seo方案

網(wǎng)站建設(shè)正版軟件,廣東網(wǎng)站營(yíng)銷seo方案,網(wǎng)站建設(shè)費(fèi)應(yīng)入什么科目,做外匯模擬的網(wǎng)站文章目錄1.指針是什么2.指針和指針類型2.1 指針的解引用2.2 指針 -整數(shù)3.野指針3.1 野指針成因3.2 如何規(guī)避野指針4. 指針運(yùn)算4.1 指針-整數(shù)4.2 指針-指針4.3 指針的關(guān)系運(yùn)算5. 指針和數(shù)組6. 二級(jí)指針7. 指針數(shù)組1.指針是什么 指針理解的2個(gè)要點(diǎn): 指針是內(nèi)存中一個(gè)最…

文章目錄

  • 1.指針是什么
  • 2.指針和指針類型
    • 2.1 指針的解引用
    • 2.2 指針+ -整數(shù)
  • 3.野指針
    • 3.1 野指針成因
    • 3.2 如何規(guī)避野指針
  • 4. 指針運(yùn)算
    • 4.1 指針+-整數(shù)
    • 4.2 指針-指針
    • 4.3 指針的關(guān)系運(yùn)算
  • 5. 指針和數(shù)組
  • 6. 二級(jí)指針
  • 7. 指針數(shù)組

1.指針是什么

指針理解的2個(gè)要點(diǎn):

  1. 指針是內(nèi)存中一個(gè)最小單元的編號(hào),也就是地址
  2. 平時(shí)口語(yǔ)中說的指針,通常指的是指針變量,是用來存放內(nèi)存地址的變量

總結(jié): 指針就是地址,口語(yǔ)中說的指針通常指的是指針變量。

我們可以這樣理解:
內(nèi)存:
在這里插入圖片描述

指針變量
我們可以通過&(取地址操作符)取出變量的內(nèi)存其實(shí)地址,把地址可以存放到一個(gè)變量中,這個(gè)變量就是指針變量

看代碼:

#include <stdio.h>
int main()
{int a = 10;//在內(nèi)存中開辟一塊空間int* p = &a;//這里我們對(duì)變量a,取出它的地址,可以使用&操作符。//a變量占用4個(gè)字節(jié)的空間,這里是將a的4個(gè)字節(jié)的第一個(gè)字節(jié)的地址存放在p變量中,p就是一個(gè)之指針變量。return 0;
}

總結(jié):

指針變量,用來存放地址的變量。(存放在指針中的值都被當(dāng)成地址處理)。

經(jīng)過仔細(xì)的計(jì)算和權(quán)衡我們發(fā)現(xiàn)一個(gè)字節(jié)給一個(gè)對(duì)應(yīng)的地址是比較合適的。
對(duì)于32位的機(jī)器,假設(shè)有32根地址線,那么假設(shè)每根地址線在尋址的時(shí)候產(chǎn)生高電平(高電壓)和低電平(低電壓)就是(1或者0);
那么32根地址線產(chǎn)生的地址就會(huì)是:
在這里插入圖片描述
這里我們就明白:

  • 在32位的機(jī)器上,地址是32個(gè)0或者1組成二進(jìn)制序列,那地址就得用4個(gè)字節(jié)的空間來存儲(chǔ),所以一個(gè)指針變量的大小就應(yīng)該是4個(gè)字節(jié)。
  • 那如果在64位機(jī)器上,如果有64個(gè)地址線,那一個(gè)指針變量的大小是8個(gè)字節(jié),才能存放一個(gè)地址。

總結(jié):

  • 指針變量是用來存放地址的,地址是唯一標(biāo)示一個(gè)內(nèi)存單元的
  • 指針的大小在32位平臺(tái)是4個(gè)字節(jié),在64位平臺(tái)是8個(gè)字節(jié)

2.指針和指針類型

char *pc = NULL;
int *pi = NULL;
short *ps = NULL;
long *pl = NULL;
float *pf = NULL;
double *pd = NULL;

指針的定義方式是: type + * 。
char* 類型的指針是為了存放 char 類型變量的地址。
short* 類型的指針是為了存放 short 類型變量的地址。
int* 類型的指針是為了存放 int 類型變量的地址。

2.1 指針的解引用

代碼演示

#include <stdio.h>
int main()
{int n = 0x11223344;char* pc = (char*)&n;int* pi = &n;*pc = 0; //重點(diǎn)在調(diào)試的過程中觀察內(nèi)存的變化。*pi = 0; //重點(diǎn)在調(diào)試的過程中觀察內(nèi)存的變化。return 0;
}

總結(jié):
指針的類型決定了,對(duì)指針解引用的時(shí)候有多大的權(quán)限(能操作幾個(gè)字節(jié))。
比如: char* 的指針解引用就只能訪問一個(gè)字節(jié),而 int* 的指針的解引用就能訪問四個(gè)字節(jié)。

2.2 指針+ -整數(shù)

代碼演示

#include <stdio.h>
int main()
{int n = 10;char* pc = (char*)&n;int* pi = &n;printf("%p\n", &n);printf("%p\n", pc);printf("%p\n", pc + 1);printf("%p\n", pi);printf("%p\n", pi + 1);return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述
總結(jié): 指針的類型決定了指針向前或者向后走一步有多大(距離)。

3.野指針

概念: 野指針就是指針指向的位置是不可知的(隨機(jī)的、不正確的、沒有明確限制的)

3.1 野指針成因

  1. 指針未初始化
#include <stdio.h>
int main()
{int* p;//局部變量指針未初始化,默認(rèn)為隨機(jī)值*p = 20;return 0;
}

代碼運(yùn)行之后會(huì)報(bào)錯(cuò)
在這里插入圖片描述

  1. 指針越界訪問
#include <stdio.h>
int main()
{int arr[10] = { 0 };int* p = arr;int i = 0;for (i = 0; i <= 11; i++){//當(dāng)指針指向的范圍超出數(shù)組arr的范圍時(shí),p就是野指針*(p++) = i;}return 0;
}
  1. 指針指向的空間釋放
#include <stdio.h>
int* test()
{int a = 10;return &a;
}
int main()
{int*p = test();*p = 100;return 0;
}
 a出test函數(shù)就已經(jīng)銷毀,但是return把a(bǔ)的地址傳給了p,p里邊存放了a的地址,但是p不能在對(duì)其進(jìn)行修改

3.2 如何規(guī)避野指針

  1. 指針初始化
  2. 小心指針越界
  3. 指針指向空間釋放,及時(shí)置NULL
  4. 避免返回局部變量的地址
  5. 指針使用之前檢查有效性
#include <stdio.h>
int main()
{//一個(gè)指針不知道應(yīng)該指向哪里的時(shí)候,暫時(shí)可以初始化為NULL;int* p = NULL;if (p != NULL)//判斷指針是否為空,不為空再進(jìn)行訪問{*p = 100;}return 0;
}

4. 指針運(yùn)算

4.1 指針±整數(shù)

代碼演示:

#include <stdio.h>int my_strlen(char * str)
{int count = 0;while (*str != '\0'){count++;//指針+整數(shù)str = str + 1;}return count;
}int main()
{int len = my_strlen("abcdef");printf("%d\n", len);return 0;
}

運(yùn)行結(jié)果
在這里插入圖片描述

4.2 指針-指針

指針-指針=地址-地址

代碼演示:

#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int n = &arr[9] - &arr[0];printf("%d\n", n);return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

在這里插入圖片描述
總結(jié): 指針加整數(shù)等于指針,指針減指針等于整數(shù)

4.3 指針的關(guān)系運(yùn)算

//代碼一
#define N_VALUES 5
float values[N_VALUES];
float* vp;
//指針關(guān)系的運(yùn)算
for (vp = &values[N_VALUES]; vp > &values[0];)
{*--vp = 0;
}

在這里插入圖片描述
在這里插入圖片描述通過- -vp把values數(shù)組改成0
代碼簡(jiǎn)化

//代碼二:
for(vp = &values[N_VALUES-1]; vp >= &values[0];vp--)
{*vp = 0;
}

讓vp指向下標(biāo)為4的元素,通過- -vp把values數(shù)組改成0

代碼二實(shí)際在絕大部分的編譯器上是可以順利完成任務(wù)的,然而我們還是應(yīng)該避免這樣寫,因?yàn)闃?biāo)準(zhǔn)并不保證
它可行。
標(biāo)準(zhǔn)規(guī)定:

允許指向數(shù)組元素的指針與指向數(shù)組最后一個(gè)元素后面的那個(gè)內(nèi)存位置的指針比較,但是不允許與
指向第一個(gè)元素之前的那個(gè)內(nèi)存位置的指針進(jìn)行比較。

在這里插入圖片描述
允許p1與p3進(jìn)行比較,不允許p1與p2進(jìn)行比較

5. 指針和數(shù)組

指針就是指針,不是數(shù)組
數(shù)組就是數(shù)組,也不是指針

在這里插入圖片描述
指針和數(shù)組的關(guān)系:

指針是可以指向數(shù)組元素的
因?yàn)橹羔樋梢赃\(yùn)算,所以借助指針可以訪問數(shù)組

代碼演示:

#include <stdio.h>
int main()
{int arr[10] = { 0 };int* p = arr;//指針存放數(shù)組首元素的地址int i = 0;//存放for (i = 0; i < 10; i++){*p = i + 1;p++;}//打印p = arr;for (i = 0; i < 10; i++){printf("%d ", *(p + i));}return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述

6. 二級(jí)指針

指針變量也是變量,是變量就有地址,那指針變量的地址存放在哪里?
這就是 二級(jí)指針 。
代碼演示:

#include <stdio.h>
int main()
{int a = 10;//a是要在內(nèi)存中申請(qǐng)4個(gè)字節(jié)的空間的//一級(jí)指針int* pa = &a;//0x0012ff40, pa是指針變量,用來存放地址,也得向內(nèi)存申請(qǐng),申請(qǐng)4/8//二級(jí)指針int** ppa = &pa;//0x0012ff48printf("%d\n", **ppa);return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述
在這里插入圖片描述

二級(jí)指針的運(yùn)算

  • *ppa 通過對(duì)ppa中的地址進(jìn)行解引用,這樣找到的是 pa*ppa 其實(shí)訪問的就是 pa。
int b = 20;
*ppa = &b;//等價(jià)于 pa = &b;
  • **ppa 先通過 *ppa 找到 pa ,然后對(duì) pa 進(jìn)行解引用操作: *pa ,那找到的是 a。
**ppa = 30;
//等價(jià)于*pa = 30;
//等價(jià)于a = 30;

7. 指針數(shù)組

指針數(shù)組是指針還是數(shù)組?
答案:是數(shù)組。是存放指針的數(shù)組。
代碼演示:

#include <stdio.h>
int main()
{int a = 10;int b = 20;int c = 30;int* arr[] = { &a,&b,&c };int i = 0;for (i = 0; i < 3; i++){printf("%d ", *(arr[i]));}return 0;
}

運(yùn)行結(jié)果:
在這里插入圖片描述
指針數(shù)組與二級(jí)指針的結(jié)合

#include <stdio.h>
int main()
{char* arr[5];//[char* char* char* char* char*]char** p = arr;//&arr[0] - char**return 0;
}

用一維數(shù)組模擬出一個(gè)二維數(shù)組
看代碼:

#include <stdio.h>
int main()
{int arr1[] = { 1,2,3,4,5 };int arr2[] = { 2,3,4,5,6 };int arr3[] = { 3,4,5,6,7 };int* ptr[] = { arr1,arr2,arr3 };int i = 0;for (i = 0; i < 3; i++){int j = 0;for (j = 0; j< 5; j++){printf("%d ",ptr[i][j]);}printf("\n");}return 0;
}

運(yùn)行結(jié)果:

在這里插入圖片描述

http://aloenet.com.cn/news/32311.html

相關(guān)文章:

  • 做網(wǎng)站 價(jià)格seo怎么優(yōu)化方案
  • 保定專業(yè)做網(wǎng)站的公司最近的國(guó)際新聞
  • 足球網(wǎng)站建設(shè)企業(yè)網(wǎng)站怎么推廣
  • 建設(shè)網(wǎng)站時(shí)以什么為導(dǎo)向拼多多代運(yùn)營(yíng)公司十大排名
  • 軟件開發(fā)外包服務(wù)公司上海搜索排名優(yōu)化
  • 怎么授權(quán)小說做游戲網(wǎng)站如何進(jìn)行網(wǎng)絡(luò)營(yíng)銷推廣
  • 長(zhǎng)沙建立網(wǎng)站seo技術(shù)有哪些
  • 深圳網(wǎng)站建設(shè)迅美市場(chǎng)調(diào)研公司
  • 怎么模板建站杭州百度seo代理
  • 寧波網(wǎng)站建設(shè)公司排名銷售網(wǎng)絡(luò)平臺(tái)
  • 站長(zhǎng)工具網(wǎng)站測(cè)速東莞疫情最新消息通知
  • 青島網(wǎng)絡(luò)推廣建站營(yíng)銷平臺(tái)有哪些
  • 個(gè)人名義做網(wǎng)站百度熱門關(guān)鍵詞排名
  • asp.net實(shí)用網(wǎng)站開發(fā)doc十大免費(fèi)貨源網(wǎng)站免費(fèi)版本
  • 梁山做網(wǎng)站的公司西安seo培訓(xùn)機(jī)構(gòu)
  • php學(xué)建網(wǎng)站搜索引擎優(yōu)化的簡(jiǎn)寫是
  • 海南專業(yè)做網(wǎng)站的公司優(yōu)化網(wǎng)站推廣
  • 凡科網(wǎng)電腦版怎么做網(wǎng)站seo搜索優(yōu)化推廣
  • 網(wǎng)站編程技術(shù) 吉林出版集團(tuán)股份有限公司新東方烹飪學(xué)校學(xué)費(fèi)價(jià)目表
  • 用php做圖書管理網(wǎng)站重慶百度關(guān)鍵詞推廣
  • 肯達(dá)建設(shè)網(wǎng)站百度關(guān)鍵詞工具
  • 專做會(huì)議推廣的網(wǎng)站b2b平臺(tái)有哪些網(wǎng)站
  • 營(yíng)銷網(wǎng)站制作哪家有名晉城seo
  • 社區(qū)網(wǎng)站建設(shè)策劃方案如何推廣一個(gè)平臺(tái)
  • 做臨時(shí)網(wǎng)站優(yōu)化一個(gè)網(wǎng)站需要多少錢
  • 如何通過網(wǎng)站自己做網(wǎng)站谷歌優(yōu)化seo
  • 做美容美發(fā)的網(wǎng)站有哪些關(guān)于進(jìn)一步優(yōu)化 廣州
  • 中網(wǎng)可信網(wǎng)站是真的嗎教育機(jī)構(gòu)培訓(xùn)
  • 安陽(yáng)做網(wǎng)站推廣網(wǎng)站排名優(yōu)化怎樣做
  • 產(chǎn)品經(jīng)理如何做p2p網(wǎng)站改版短視頻矩陣seo系統(tǒng)源碼