C之指針

什麼是指針

* 指針變量:用來存儲某種數據在內存中的地址.
*
世面上書籍通常把指針和指針變量的概念混在一塊兒了.
市面上的書籍說的指針指的就是指針變量java

Ø *號的三種含義
1. 兩個數相乘
int i =5;
int j = 5;
i*j;

2.
基本類型* 表示這種類型的指針變量
- 指向內存中這種類型的變量的地址
int i= 3
int* p;能夠存放i的地址
p=&i

3. 指針變量前加* 表取出這個指針變量裏的數據
  int* p;
  *p 把地址裏的數據取出來數據結構

 指針常見錯誤
  * 野指針:指針變量沒有定義指向的地址,該指針就不能賦值(點我就藍屏)

  int* p;//聲明一個指針變量用來存放一個地址
  //指針變量未經賦值,不能夠使用.
  //*p 野指針.
  printf("*p=%d\n",*p);

* 每種數據類型的地址,必須用當前類型的指針變量表示

  double d = 3.14;
  int *p ;//
指針變量存儲int類型數據的地址
  //每種數據類型的地址,必須用當前數據類型的指針變量表示.
  p = &d;
  printf("*p=%lf\n",*p); 函數

Ø 值傳遞和引用傳遞
  * 引用傳遞:若是傳遞的值是一個內存地址,經過這個地址能夠找到地址對應的引用
  * 值傳遞:傳遞具體的數值
  * java語言中對象實際上存放在某個內存地址裏面,傳遞對象就至關於傳遞的是內存地址(引用傳遞)spa

Ø 指針的應用場景
  讓函數返回一個以上的值
  直接訪問硬件 (opengl 顯卡繪圖)
  快速傳遞數據(指針表示地址)
  表示複雜的數據結構(結構體)
  方便處理字符串
  指針有助於理解面向對象指針


  • 指針就是地址,地址就是指針對象

  • 地址就是內存單元的編號blog

  • 指針變量是存放地址的變量內存

  • 指針和指針變量是兩個不一樣的概念字符串

  • 可是要注意: 一般咱們敘述時會把指針變量簡稱爲指針,實際它們含義並不同io

 


#include<stdio.h>

#include<stdlib.h>

 

main() {

int i = 5;

//寫一個一級指針

int* p = &i;

printf("p = %d \n",*p);

 

//二級指針

int** pi = &p;

printf("pi =%d \n",*(*pi));

printf("pi =%d \n",**pi);

 

//三級指針

int*** pp = & pi;

printf("pp = %d \n",***pp);

}
相關文章
相關標籤/搜索