c c 指標精講和需要注意的地方

2021-07-24 22:29:53 字數 2606 閱讀 9747

int *x =&10;//不能對10取位址 因為他不在 堆疊區

//堆疊常量區的都b可以對變數取位址

10就是乙個字面量 不能取位址

1:指標是一種資料型別

1)指標也是一種變數,占有記憶體空間,用來保持記憶體位址,在一般情況下所有指標、

都是4個位元組;

2)*p操作記憶體

再指標宣告時,*號表示所宣告的變數為指標,

在指標使用時,*號表示操作指標所指向的記憶體空間的值,

*p相當於通過位址找到一塊記憶體,然後操作記憶體

*p放在等號左邊賦值(給記憶體賦值)

*p放在等號的右邊取值(從記憶體獲取值)

3)指標變數和它指向的記憶體塊是兩個不同的概念;

char s='a';

char *p=&s;

*p='b';//此操作對不會改變指標變數的值,但是會改變所指向位址的值

保證指向的記憶體是可修改的

char*p="abcdeff"; //c++編譯器會做兩個操作先給字串分記憶體再給 p 分配4個位元組記憶體
然後把a的位址賦值給 *p  也就是字串的首位址

char *p=null;

strcpy([,"abcde");  //不可以向空記憶體寫資料

4)怎麼理解(多級)指標做函式引數

a.站在c/c++編譯器的角度,如果是指標的形參 編譯器只會分配四個位元組的記憶體

例如: /*

void sed(char *p1);void sed(char*  p1)

void send(char**p1);void send(char *   * p1);

void send(char ***p1);void send(char *p)

void send(char (*p)[10]);void send(char ******p); *

/  

二間接賦值時指標存在最大的意義

1指標變數和他所指向的記憶體空間是兩碼事

int a=10;

a=15;    //直接賦值

int *p=null;

*p=20;  //*p 放在左邊就是間接修改了a的值 這樣體現出的意義不大

但是如果用在函式傳參那就不一樣了;

int ge(int*p)
int main()
有點事 下次再補充

int *x =&10;//不能對10取位址 因為他不在 堆疊區

//堆疊常量區的都b可以對變數取位址

10就是乙個字面量 不能取位址

1:指標是一種資料型別

1)指標也是一種變數,占有記憶體空間,用來保持記憶體位址,在一般情況下所有指標、

都是4個位元組;

2)*p操作記憶體

再指標宣告時,*號表示所宣告的變數為指標,

在指標使用時,*號表示操作指標所指向的記憶體空間的值,

*p相當於通過位址找到一塊記憶體,然後操作記憶體

*p放在等號左邊賦值(給記憶體賦值)

*p放在等號的右邊取值(從記憶體獲取值)

3)指標變數和它指向的記憶體塊是兩個不同的概念;

char s='a';

char *p=&s;

*p='b';//此操作對不會改變指標變數的值,但是會改變所指向位址的值

保證指向的記憶體是可修改的

char*p="abcdeff"; //c++編譯器會做兩個操作先給字串分記憶體再給 p 分配4個位元組記憶體
然後把a的位址賦值給 *p  也就是字串的首位址

char *p=null;

strcpy([,"abcde");  //不可以向空記憶體寫資料

4)怎麼理解(多級)指標做函式引數

a.站在c/c++編譯器的角度,如果是指標的形參 編譯器只會分配四個位元組的記憶體

例如:/*

void sed(char *p1);void sed(char*  p1)

void send(char**p1);void send(char *   * p1);

void send(char ***p1);void send(char *p)

void send(char (*p)[10]);void send(char ******p); *

/  

二間接賦值時指標存在最大的意義

1指標變數和他所指向的記憶體空間是兩碼事

int a=10;

a=15;    //直接賦值

int *p=null;

*p=20;  //*p 放在左邊就是間接修改了a的值 這樣體現出的意義不大

但是如果用在函式傳參那就不一樣了;

c c 使用指標需要注意的問題

分配空間 初始化 釋放 二 常見的錯誤有幾種 1 記憶體分配未成功,卻使用了它 程式設計新手常犯這種錯誤,因為他們沒有意識到記憶體分配會不成功。常用解決辦法是,使用記憶體之前檢查指標是否為null。如果指標p是函式的引數,那麼在函式的入口處用assert p null 進行檢查。如果使用malloc...

零基礎學習C C 需要注意的地方

談及c c 功能強大 應用廣泛,一旦掌握了後,若是再自學其他語言就顯得輕而易舉了。那為什麼學c c 的人少呢?很多人認為c c 雖然博大精深,但也難學。其實就本人認為c c 並程式設計客棧非是 difficult 困難 的,只要你能理清思路,掌握它的精髓,配合一套教材。那麼學c c 是一件非常容易且...

java需要注意的地方2

1.abstract class name 大俠們,這有何錯誤?答案 錯。abstract method必須以分號結尾,且不帶花括號。2.public class something 有錯嗎?答案 錯。區域性變數前不能放置任何訪問修飾符 private,public,和protected final...