日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言 const 修饰指针 - C语言零基础入门教程

發布時間:2024/9/27 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 const 修饰指针 - C语言零基础入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一.const 簡介
  • 二.const 修飾指針
    • 1.const int *p
    • 2.int const *p
    • 3.int * const p
    • 4.const int * const p
  • 三.猜你喜歡

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.const 簡介

const 是 constant 的縮寫,意思是“恒定不變的”!它是定義只讀變量或者常變量的關鍵字。const 定義的是變量,但又相當于常量;說它定義的是常量,但又有變量的屬性,所以也叫常變量。

const 定義的變量的值是不允許改變的,即不允許給它重新賦值,即使是賦相同的值也不可以。所以說它定義的是只讀變量。這也就意味著必須在定義的時候就給它賦初值。

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 const 修飾指針 //@Time:2021/07/02 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/#include <stdio.h>int main() {const int a = 20 ;printf("a = %d\n",a);a = 200 ;printf("a = %d\n",a);return 0; }/*輸出:Compilation Failederror: assignment of read-only variable 'a'6 | a = 200 ;| ~~^~~~~*/

二.const 修飾指針

首先應該回憶一下指針內容:

int *p = 5;/*p:指針的內存地址,類似門牌號,十六進制表示:0xffff*p:指針的內存地址對應的值,類似門牌號對應里面住的人,即5*/

1.const int *p

當把 const 放最前面的時候,它修飾的就是 *p,那么 *p 就不可變。*p 表示的是指針變量 p 所指向的內存單元里面的內容,此時這個內容不可變。其他的都可變,如 p 中存放的是指向的內存單元的地址,這個地址可變,即 p 的指向可變。但指向誰,誰的內容就不可變。

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 const 修飾指針 //@Time:2021/07/02 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/# include <stdio.h>int main(void) {int a = 10;const int *p = &a;int * q = &a;*q = 20;printf("a = %d\n", a);a = 30;printf("a = %d\n", a);//const int *p = &a; //表示 *p 值不能發生改變否則 error: assignment of read-only location '* p'//*p = 30; //這么寫就是錯的return 0; }/*輸出:a = 20 a = 30*/

2.int const *p

constint 可以互換位置,所以 int const *p 和 const int *p 二者是等價的;

3.int * const p

此時 const 修飾的是 p,所以 p 中存放的內存單元的地址不可變,而內存單元中的內容可變。即 p 的指向不可變,p 所指向的內存單元的內容可變。

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 const 修飾指針 //@Time:2021/07/02 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/# include <stdio.h>int main(void) {const char *p = "hello"; //*p 不可以改變 ,p地址可以改變char* const q = "bbb"; // q地址不能改變p++; //ok//q++; //這句是錯誤的. error: increment of read-only variable 'q'printf("%s\n",p);printf("%s\n",q);return 0; }/*輸出:ellobbb*/

靈魂拷問:知道為什么輸出是 “ello” 而不是 “hello” ??

4.const int * const p

*p 和 p 都被修飾了,那么 p 中存放的內存單元的地址和內存單元中的內容都不可變。

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 const 修飾指針 //@Time:2021/07/02 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/# include <stdio.h>int main(void) {const char * const p = "hello"; //*p 不可以改變 ,p地址不可以改變//*p++; //這句是錯誤的. error: increment of read-only variable 'p'//p++; //這句是錯誤的. error: increment of read-only variable 'p'printf("%s\n",p);return 0; }

綜上所述,使用 const 修飾指針可以保護用指針訪問內存時由指針導致的被訪問內存空間中數據的誤更改。因為指針是直接訪問內存的,沒有拷貝,而有些時候使用指針訪問內存時并不是要改變里面的值,而只是要使用里面的值,所以一旦不小心誤操作把里面的數據改了就糟糕了。

三.猜你喜歡

  • C 語言 數組下標越界和內存溢出區別
  • C 語言 指針聲明和定義
  • C 語言 指針 p++ / p–
  • C 語言 p++/§++/_(p++)/_p++
  • C 語言 使用指針遍歷數組
  • C 語言 指針和數組區別
  • C 語言 指針數組和數組指針區別
  • C 語言 空指針 NULL
  • C 語言 void 指針
  • C 語言 野指針
  • C 語言 函數值傳遞和址傳遞
  • C 語言 函數缺省參數
  • C 語言 函數不定長參數
  • C 語言 函數指針
  • C 語言 指針函數
  • C 語言 回調函數 callback
  • C 語言 typedef
  • C 語言 define 定義常量
  • C 語言 define 防止頭文件重復包含
  • C 語言 #pragma once
  • C 語言 #include <> 與 #include “” 區別
  • C 語言 const 修飾變量
  • C 語言 const 修飾指針
  • 未經允許不得轉載:猿說編程 ? C 語言 const 修飾指針

    總結

    以上是生活随笔為你收集整理的C语言 const 修饰指针 - C语言零基础入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。