C 指標和陣列知識點總結(防坑指南)

2021-09-03 01:39:15 字數 2629 閱讀 2905

字串常量的宣告方式:(儲存在常量儲存區,不可被修改)

char *p="i love you";
字串變數的宣告方式:(通常放在棧中,可被修改)

char p="i love you";

#include using namespace std;

int main()

輸出:長時間等待後無輸出,單步除錯提公升如下

輸出:

1.使用string定義字串,傳入函式

2.使用char*定義的字串,傳入函式

1,string傳入的字串:相當於string cp=p;

此時p的是乙個類物件,函式對該物件進行拷貝,形成乙個新的字串cp,而對cp的修改不會影響p。

2,char* 傳入的字串:相當於char *cp=p;

char cp傳入的字串與上面相同:char cp=p;

此時的p是字串的首位址,對cp和p指向同乙個儲存區域,通過cp對儲存區域的修改會影響p指向的字串。

1,p為區域性陣列,函式呼叫完成後立即銷毀,導致返回的指標找不到物件。

2,*p指向的字串常量在靜態儲存區,函式呼叫完成後不會立即銷毀,所以返回的指標可以找到物件。

c/c++堆、棧及靜態資料區詳解

static全域性變數與普通的全域性變數

static int a; 定義的變數a=0,只在當前cpp中可以使用,修改後不影響其他地方,其他地方呼叫的值預設為0;

->當前cpp檔案中全域性共享

extern int a; 宣告變數a;修改後影響其他地方的值,可以多處宣告,但是只能在一處定義

->所有cpp檔案中全域性共享

int a;定義的變數a=0,只在當前cpp中可以使用,其他地方無法呼叫

,其他地方只能用extern宣告後才能呼叫

#ifndef main

#define main

static int t; //定義t 標頭檔案中使用該方式不安全(假全域性變數)

extern int p; //宣告p

void ou2(); //相當於extern void ou2();

static void ou3();

class a

;#endif

#include #include "main.h"

#include using namespace std;

int p = 0; //定義p=0

int a::b = 0; //定義b=0

int q; //定義b=0

指標與陣列知識點總結

本文基於flying music部落格,加入自己的一些理解,請周知 1.印子 指標為什麼需要返回型別 我們用c語言寫了這樣的語句 cpp view plain copy inta a 3 編譯器為了完成這兩句 首先在編譯過程中要建立乙個符號表,樣子大概如下圖 然後在執行過程中,編譯器發現a 3這句 ...

C語言 總結陣列指標相關知識點

1 陣列在記憶體中是連續存放的。2 記憶體中的乙個記憶體單元對應乙個位址。3 在32位平台上指標是4個位元組,64位平台8個位元組。4 陣列的陣列名其實是陣列首元素的位址。1 sizeof 陣列名 這裡陣列名表示整個陣列。2 陣列名,這裡陣列名表示整個陣列。例子 32位 includeint mai...

指標知識點總結

用指標作函式引數。返回指標值的指標函式。指標陣列 指向指標的指標。main函式的命令列引數。指標與指標變數的概念 指標與位址運算子。變數 陣列 字串 函式 結構體的指標,以及指向變數 陣列 字串 函式 結構體的指標變數,通過指標引用以上各型別資料。指標與指標變數的概念。1 指標 就是記憶體中的乙個儲...