#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...