c 裡的指標

2021-09-01 13:20:44 字數 2051 閱讀 8639

#include "stdafx.h"

#include

#include

using namespace std;

void swap1(int inum1, int inum2);

void swap2(int& inum1, int& inum2);

void swap3(int* pnum1, int* pnum2);

void swap4(int* pnum1, int* pnum2);

void getmemory(char* pstr);

void getmemory(char* *pstr);

int main()

//定義: 資料型別*+p指標名字

//指標在定義的時候必須指向乙個位址,可以是空位址(bullptr )或者可用的位址

int inum1=3;

int inum2 = 6;

*: 取值符號,

//inum = 6;

//*pnum2 = 3;

//cout << pnum2 << endl;

//cout << *pnum2 << endl;

//swap3(&inum1, &inum2);

//cout << inum1 << endl;

//cout << inum2 << endl;//只交換位址,但是數值並未改變

//swap4(&inum1, &inum2);

//cout << inum1 << endl;

//cout << inum2 << endl;//只交換數值,但是位址並未改變

//申請位址  new 出來的位址並不會被銷毀,必須主動去釋放

//int* pnum = new int;//

釋放記憶體: delete    在不使用的時候必須去釋放,否則容易造成記憶體洩漏

//if (nullptr != pnum)

//      delete pnum;

//      pnum = nullptr;

//int* pnum = new int;

//char* pstr = new char;

//char* pstr2 = "hellow world!";

//cout << sizeof(pnum) << endl;

//cout << sizeof(pstr) << endl;

//cout << sizeof(pstr2) << endl;//   4,4,4   指標的大小全是4

char inum3 = 0;

//char* pstr = &inum3;

char* pstr = nullptr;

getmemory(&pstr);

strcpy_s(pstr, sizeof("hellow world!") + 1, "hellow world!");

cout << pstr << endl;

if (nullptr != pstr)

delete pstr;

pstr = nullptr;

//cout << *pstr << endl;

system("pause");

return 0;

void swap1(int inum1, int inum2)

void swap2(int & inum1, int & inum2)

void swap3(int * pnum1, int * pnum2)

int* ptemp = pnum1;

pnum1 = pnum2;

pnum2 = ptemp;

void swap4(int * pnum1, int * pnum2)

int ptemp = *pnum1;

*pnum1 = *pnum2;

*pnum2 = ptemp;

void getmemory(char * pstr)

pstr = new char[100];

void getmemory(char ** pstr)

*pstr = new char[100];

C 裡的函式指標

今天在寫乙個小功能的時候,寫了三個介面函式,結果 基本類似,只是其中呼叫的函式不一樣,而且這幾個呼叫函式的宣告是完全一樣的。根據 的抽象三原則裡的rules of three,應該得抽象一下了。最直接的想法就是抽出乙個共用函式,三個介面函式呼叫這個共用函式,通過傳入不同的函式指標,來實現不同的功能。...

C語言裡的陣列指標

對陣列位址的理解 1.陣列別名本身是乙個指標,對資料取下表實際上是先通過下表取指標,然後通過指標取值 arr指向陣列頭的指標 n 取得指標後對其進行n位偏移後作 對指標取值的操作 2.陣列本身是被編譯器做了優化的,arr是存放陣列第乙個元素的指標,那麼 arr應該是指向這個指標的指標,然而編譯器對其...

C語言裡的指標型別轉換

當我們初始化乙個指標或給乙個指標賦值時,賦值號的左邊是乙個指標,賦值號的右邊是乙個指標表示式。在我們前面所舉的例子中,絕大多數情況下,指標的型別和指標表示式的型別是一樣的,指標所指向的型別和指標表示式所指向的型別是一樣的。例 1 float f 12.3 2 float fptr f 3 int p...