你正真瞭解C語言中的指針嗎

工具: Visual Studio
快捷鍵方式: www.jb51.net/softjc/1295…html

C語言中,指針是咱們常常見到的,通常放到基本類型後面一塊兒表示指針的數據類型,表示一段內存地址數組

內存的分類:

3區bash

  • 程序區微信

    程序的二進制文件 eg:class, so文件工具

  • 靜態存儲區
    全局變量和靜態變量 eg: int i = 2;ui

  • 動態存儲區spa

    • 堆區(heap):用於程序動態分配 eg:Java 中的new一個對象,不連續的內存空間,C語言中不會被系統自動回收。不像Java中,有垃圾回收機制.net

    • 棧區(stack):編譯器自動分配,編譯器自動申請和釋放 2M, 方法一執行完就回收了指針

指針和數值之間的關係

  • 數組:數組就是一塊連續的內存空間,每一個元素之間的距離跟數據的類型有關係code

  • 數組名就是數組的首地址(即時數組的指針)

  • 對數組名不斷的取其地址獲得的仍是數組的首地址

數組代碼
數組代碼

輸出代碼
輸出代碼

C語言中怎麼表示字符串

  • 用指針表示
char * p = "helloworle";//表示申請一塊內存地址,用於存儲字符串常亮的地址複製代碼
  • 用數組表示
    ```
    char str1[] = "HelloWorld"; // 經過字符數組來定義字符串"HelloWorld",數組中每一個存儲單元存放一個字符

har s[80]="abcd";或者char s[80]={"abcd"}; /說明:自動加字符串結束標誌:\0/
char s[80]={"a","b","c","d","\0"};

複製代碼

char *str2 = "HelloWorld"; // 經過字符指針來定義字符串"HelloWorld",指針str2指向一個存放字符串"HelloWorld"的連續地址單元的首地址

#define str3 "HelloWorld"; // 經過宏定義來定義字符串"HelloWorld",等價於str3="HelloWorld"

#### 數組的初始化複製代碼

strcpy();

#### 指針的初始化複製代碼

malloc();

#### 結構體的定義


#### 結構體的實例化複製代碼

struct MM{
char name[20];
int age;
} mm = {"終端研發部",20};

int _tmain(int argc, _TCHAR* argv[]){
//第一種方法初始化
MyStruct stu1 = {"終端研發部",20};
// 第二種
struct Student student2;
student2.age = 27;
student2.name = "asdfgsdf";
strcpy(stu2.clazz,"終端研發部");

printf("%s\n %s\n %d\n", stu1.name, student2.clazz,student2.age);

system("pause");
return 0;複製代碼

}

報錯解決方式:複製代碼

_CRT_SECURE_NO_DEPRECATE
```

相信本身,沒有作不到的,只有想不到的

若是你以爲此文對您有所幫助,歡迎入羣 QQ交流羣 :232203809
微信公衆號:終端研發部

技術+職場
技術+職場
相關文章
相關標籤/搜索