欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

[C語言]指針初階-創(chuàng)新互聯(lián)

[C語言]指針初階

10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有南寧免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。文章目錄
  • [C語言]指針初階
    • 1.指針def:
    • 2.指針變量:
    • 3.指針和內(nèi)存的關(guān)系:
    • 4.指針和指針類型:
      • 4.1指針類型:
    • 5.指針+-整數(shù):
    • 6.指針的解引用:
    • 7.野指針:
      • 7.1成因:
      • 7.2如何規(guī)避野指針:
    • 8.指針運(yùn)算:
      • 8.1指針+-整數(shù):
      • 8.2指針-指針:
      • 8.3指針的關(guān)系運(yùn)算:
    • 9.指針和數(shù)組:
      • 9.1數(shù)組和指針的關(guān)系:
    • 10.指針數(shù)組:

📟作者主頁:慢熱的陜西人

🌴專欄鏈接: C語言

📣歡迎各位大佬👍點(diǎn)贊🔥關(guān)注🚓收藏,🍉留言

本博客簡單介紹了指針的概念和指針的初階的一些知識(shí)

1.指針def:

📣指針就是地址,口語中說的指針通常指的是指針變量

2.指針變量:

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

3.指針和內(nèi)存的關(guān)系:

每一個(gè)字節(jié)(一個(gè)基本的內(nèi)存單元)都有一個(gè)地址,在32位的機(jī)器上指針變量的大小就是4個(gè)字節(jié),因?yàn)?2位的二進(jìn)制數(shù)字只能編址:4 GB原理如下:

(2 ^ 32 Byte == 2^32/1024 KB ==2^32 / 1024 / 1024 MB ==2^32/1024/1024/1024 GB == 4 GB) 4 G的空間進(jìn)行編址。

如果是在64位機(jī)器上,指針變量的大小就是8個(gè)字節(jié),八個(gè)字節(jié)的二進(jìn)制數(shù)字可以編址的內(nèi)存空間大小是32位機(jī)器的2的32次方倍;

4.指針和指針類型:

📣指針變量的大小都是相同的,為什么還要分很多種類: 決定了指針類型加減整數(shù),指針類型解引用可以操作的內(nèi)存空間大小

char  *pc = NULL;
int   *pi = NULL;
short *ps = NULL;
long  *pl = NULL;
float *pf = NULL;
double *pd = NULL;
4.1指針類型:

指針類決定了指針進(jìn)行解引用操作的時(shí)候,訪問幾個(gè)字節(jié)(權(quán)限)

例如:

char*   //char類型指針每次解引用訪問只訪問一個(gè)字節(jié)
int*    //int類型指針每次解引用訪問只訪問四個(gè)字節(jié)
double* //double類型指針每次解引用訪問只訪問八個(gè)字節(jié)
5.指針±整數(shù):

📣指針的類型決定了指針向前或者向后走一步有多大(距離)

#include//演示實(shí)例
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; }
6.指針的解引用:

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

//演示實(shí)例
#includeint 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; }
7.野指針:

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

7.1成因:

(1)指針未初始化:

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

(2)指針越界訪問:

#includeint 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; }

(3)指針指向的空間釋放;

7.2如何規(guī)避野指針:
  1. 指針初始化
  2. 小心指針越界
  3. 指針指向空間釋放,及時(shí)置NULL
  4. 避免返回局部變量的地址
  5. 指針使用之前檢查有效性

例如:

#includeint main()
{int *p = NULL;
    //....
    int a = 10;
    p = &a;
    if(p != NULL)
   {*p = 20;
   }
    return 0; }
8.指針運(yùn)算:
  1. 指針± 整數(shù)
  2. 指針-指針 //指針+指針不可以(進(jìn)階會(huì)解釋)
  3. 指針的關(guān)系運(yùn)算
8.1指針±整數(shù):
#define N_VALUES 5
float values[N_VALUES];
float *vp;
//指針+-整數(shù);指針的關(guān)系運(yùn)算
for (vp = &values[0]; vp< &values[N_VALUES];)
{
     *vp++ = 0; 
}
8.2指針-指針:
int my_strlen(char *s) {   char *p = s;
       while(*p != '\0' )
              p++;
       return p-s; }
8.3指針的關(guān)系運(yùn)算:

📣指針可以比較大小

for(vp = &values[N_VALUES]; vp >&values[0];)
{
    *--vp = 0; 
}

for(vp = &values[N_VALUES-1]; vp >= &values[0];vp--) 
{
    *vp = 0; 
}

📣標(biāo)準(zhǔn)規(guī)定:

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

9.指針和數(shù)組: 9.1數(shù)組和指針的關(guān)系:

📣不同:

  • 數(shù)組和指針不是一個(gè)東西
  • 數(shù)組能夠存放一組數(shù),連續(xù)的空間,數(shù)組的大小取決于元素個(gè)數(shù)
  • 指針是一個(gè)變量,是存放地址的,4/8個(gè)字節(jié)

📣聯(lián)系:

  • 數(shù)組名是地址(指針)
  • 數(shù)組把首元素的地址,交給一個(gè)指針變量后可以通過指針變量來訪問數(shù)組

指針和數(shù)組關(guān)系應(yīng)用示例:

#includeint main()
{int arr[] = {1,2,3,4,5,6,7,8,9,0};
    int *p = arr; //指針存放數(shù)組首元素的地址
    int sz = sizeof(arr)/sizeof(arr[0]);
    for(i=0; iprintf("&arr[%d] = %p<====>p+%d = %p\n", i, &arr[i], i, p+i);
   }
    return 0; }

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-2G8rdykW-1670991890615)(C:\Users\jason\AppData\Roaming\Typora\typora-user-images\image-20221214122058161.png)]

10.指針數(shù)組:

📣def:存放指針的數(shù)組;

兩種示例:

1.實(shí)現(xiàn)多個(gè)變量的指針的存儲(chǔ)

int main()
{int a = 10;
	int b = 20;
	int c = 30;
	int d = 40;
	int e = 50;

	int* arr3[5] = {&a, &b, &c, &d, &e};//存放整型指針的數(shù)組
	int i = 0;
	for (i = 0; i< 5; i++)
	{printf("%d ", *(arr3[i]));
	}

	return 0;
}

2.模擬實(shí)現(xiàn)二維數(shù)組

int main()
{//用一維數(shù)組模擬一個(gè)二維數(shù)組
	int arr1[] = {1,2,3,4,5 };
	int arr2[] = {2,3,4,5,6 };
	int arr3[] = {3,4,5,6,7 };
	int arr4[] = {4,5,6,7,8 };

	int* arr[4] = {arr1, arr2, arr3, arr4};
	int i = 0;
	for (i = 0; i< 4; i++)
	{int j = 0;
		for (j = 0; j< 5; j++)
		{	printf("%d ", *(*(arr+i)+j));
		}
		printf("\n");
	}

?

到這本篇博客的內(nèi)容就到此結(jié)束了。
如果想要更加深入的了解指針可以關(guān)注博主接下來的指針進(jìn)階,內(nèi)容更加豐富和詳細(xì)!
如果覺得本篇博客內(nèi)容對(duì)你有所幫助的話,可以點(diǎn)贊,收藏,順便關(guān)注一下!
如果文章內(nèi)容有錯(cuò)誤,歡迎在評(píng)論區(qū)指正

在這里插入圖片描述

你是否還在尋找穩(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)查看詳情吧

當(dāng)前文章:[C語言]指針初階-創(chuàng)新互聯(lián)
新聞來源:http://www.chinadenli.net/article2/dgsioc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)網(wǎng)頁設(shè)計(jì)公司移動(dòng)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站全網(wǎng)營銷推廣域名注冊

廣告

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

成都做網(wǎng)站