【C語言】函式引數中的const修飾符
通常,字串操作函式原型中,都會在形參前面加上const修飾符,表示此指標不能用於修改字串的值
比如:char *strcpy(char *strDest, constchar *strSrc)
但是可不可以通過 在函式裡定義一個指標指向strSrc,來改掉字串的值呢?
給出以下程式碼:
#include <STDIO.H> #include<stdlib.h> void fuc(const char *p) { char *q = p; *q='b'; } int main() { char p[]="abcd"; fuc(p); puts(p); system("pause"); return 0; }
vc6.0下:
結果顯示可以
換成vs2013:
報出以下錯誤。
但是,使用強制型別轉化後:
結果:
說明,函式引數裡新增const修飾指標,並不說明此函式就不能修改 指標指向的內容,只是說明 函式不能通過被const修飾的指標改變指向的內容。
相關推薦
【C語言】函式引數中的const修飾符
通常,字串操作函式原型中,都會在形參前面加上const修飾符,表示此指標不能用於修改字串的值 比如:char *strcpy(char *strDest, constchar *strSrc)
【C語言】函式指標陣列和指向函式指標陣列的指標
一、函式指標陣列1.1函式指標陣列的宣告 函式指標陣列的宣告如下,所謂函式指標陣列就是在之前的函式指標的基礎上增加了[],由於[]的優先順序高於*,故 pf先與[]結合,說明它是一個數組,再與*結合說明陣列中的元素的型別是指標,再看後面的引數列表,說明每一個指標都指
【C語言】可變引數列表剖析
一、為什麼函式要有可變引數列表 就舉一個簡單的例子來解答這個問題吧,具有一定C語言程式設計基礎的讀者,一定知道求兩個數平均值的函式,實現過程很簡單,我們只需要把兩個引數傳給函式,並用一個變數接收函式返回來的結果即可。 但是,我們都知道現實生活中,我們需要求
【C語言】統計隨機數中數字出現個數,並列印直方圖
實現功能:生成二十個隨機數。統計二十個數中,0-9數字出現的次數,並列印成直方圖 #include<stdio.h> #include<stdlib.h> #define N 20 int a[N],b[10]; void gen_rand
【C語言】函式指標、函式指標陣列、函式指標陣列的指標
一.函式指標 1.定義理解 函式指標:是一個指標,存放函式地址的指標。 函式的地址可以通過取地址函式名拿到,也可以通過函式名直接拿到。2.函式指標 (1)定義一個函式test void test(char *str) { printf("%s\n",str); }
【C語言】統計陣列中出現次數超過一半的數字
//統計陣列中出現次數超過一半的數字 #include <stdio.h> int Find(int *arr, int len) { int num = 0; //當
【C語言】實際專案開發過程中常用C語言函式的9大用法
C語言是當中最廣泛的計算機程式語言,是所有計算機程式語言的祖先,其他計算機程式語言包括當前流行的Java語言,都是用C語言實現的,C語言是程式設計效率最高的計算機語言,既能完成上層應用開發,也能完成底層硬體驅動程式設計,在計算機程式設計當中,特別是在底層硬體驅動開發當中,具有不可替代的作用。
【C語言】自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置
//自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置 #include <stdio.h> #include <string.h> char
【C語言】main函式的引數解析
main函式 每個C程式都必須有一個main函式,main函式又稱為主函式,是執行程式的起點,它被稱之為函式,是否會像平時使用函式時需要自己的引數呢? 答案是肯定的,那麼他都有那些引數呢? main函式的在vs2017環境下除錯,可以看到main函式裡的三個引數
【C語言】模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回
//模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回 #include <stdio.h> //#include <string.h> #includ
【C語言】自己編寫程式實現strchr函式。即在給定字串中找特定的字元並返回該處指標。
<pre name="code" class="cpp">//自己編寫程式實現strchr函式。即在給定字串中找特定的字元並返回該處指標。 #include <stdio.h>
【C語言】使用可變引數,實現函式,求函式引數的最大值。
求若干個引數的最大值,我們假定第一個可變引數為最大值,定義為max,將之後的每一個可變引數和第一個可變引數相比較,始終在max裡存放的是最大值。 但是這裡需要注意,每一次呼叫va_arg,都會指向下一個可變引數,因此我們需要將其值儲存在臨時變數裡,以防指向錯誤。 #includ
【c語言】字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”
// 字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”。 // 例如輸入“we are happy.”,則輸出“we%20are%20happy.” #include <stdio.h> #include <assert.h>
【C語言】用可變引數列表實現printf函式
//用可變引數列表實現printf函式 #include <stdio.h> #include <stdarg.h> void my_printf(const char *st
【C語言】實現一個函式,可以左旋字串中的k個字元。
.實現一個函式,可以左旋字串中的k個字元。 AABCD左旋一個字元得到ABCDA AABCD左旋兩個字元得到BCDAA 思路: 1.如果直接進行左移,肯定會存在陣列前面的元素丟失。 解決辦法:
【c語言】模擬實現strchr函式,功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL
// 模擬實現strchr函式,功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL #include <stdio.h> #include <assert.h> char const* my_strchr(char cons
【c語言】用可變引數列表實現一個簡化的printf函式
//實現一個簡化的printf函式。 #include <stdarg.h> #include <string.h> void my_printf(const char *str,...) { va_list arg; //準備訪問可變引
【C++筆記】函式中引數傳遞
函式中引數是如何傳遞的呢? 在《C++Primer》一書中提到: “Each time we call a function, its parameters are created and initialized by the arguments passed in the
【C語言】統計數字在排序數組中出現的次數
語言 個數 統計 ret r+ () class tdi times //數字在排序數組中出現的次數。 //統計一個數字在排序數組中出現的次數。比如:排序數組{1,2,3,3,3,3,4,5}和數字3,因為3出現了4次,因此輸出4. #include <stdio
【C語言】記憶體分配函式malloc/ calloc/ realloc及記憶體釋放free
前言: 記憶體區域劃分與分配: 1、棧區(stack)——程式執行時由編譯器自動分配,存放函式的引數值,區域性變數的值等,程式結束時由編譯器自動釋放。 2、堆區(heap) —— 在記憶體開闢另一塊儲存區域。一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可