原创 在字符串copy函數中引入輔助指針變量

特別注意:不要輕易改變函數形參的值,要引入一個輔助指針變量,把形參的值接過來 #include "stdio.h" #include "stdlib.h" #include "string.h" //改變形參指針的指向後無法打印

原创 堆棧程序理解

#include "stdio.h" #include "stdlib.h" #include "string.h" //堆 char *getMem(int num) { char *p1= NULL; p1

原创 棧的屬性和buf的地址增長方向

證明棧的開口方向: 1、定義兩個變量(先定義的先入棧) 2、b的地址小–>開口向下 b的地址大–>開口向上 #include "stdio.h" #include "stdlib.h" #include "stri

原创 排序方法----選擇排序

選擇排序法程序: #include<stdio.h> #include<stdlib.h> #include<string.h>   void printfArray(inta[],int num) { inti=0; for(i=

原创 函數調用模型

C++編譯器會爲每一個應用程序建立一個內存四區,主函數和被調函數公用一塊內存四區。 main中可以在棧或者堆中分配內存,也可以在全局區分配內存 所以,這些變量可以被fa()和fb()使用(因爲main函數還沒執行完,不會被析構掉)

原创 字符串做函數參數

字符串做字符拷貝函數的參數 #include "stdio.h" #include "stdlib.h" #include "string.h" //字符串copy函數技術推演 //字符串copy工作 //from形參,to形參的值

原创 字符串基本操作

字符串: 1、C語言的字符串是以0結尾的字符串 2、C語言中沒有字符串類型,而是通過字符數組,來模擬字符串 3、字符串的內存分配可以在 堆上、棧上、全局區(很重要) #include "stdio.h" #include "

原创 避免野指針

#include"stdio.h" #include"stdlib.h" #include"string.h"   //野指針產生的原因 //指針變量和它所指向的內存空間變量是兩個不同的概念 //釋放了指針所指向的內存空間  但是指

原创 數組中括號與指針關係、數組名常量指針分析

一、數組中括號與指針的關係 1、[]的本質和 *p 是一樣的,只不過符合程序員的閱讀習慣。 2、buf5是一個指針(數組首元素的地址),是隻讀的常量,即buf5是一個常量指針 C編譯器這樣做的原因:爲了保證,在析構內存的時候

原创 通過2級指針改變1級指針的指向

#include "stdio.h" #include "stdlib.h" #include "string.h" //2級指針作爲函數參數,來修改主函數中1級指針的值 //函數的運算結果,可以通過指針做函數參數的形式甩出來 void

原创 內存四區---靜態存儲區(全局區)的理解

Tips: 1、指針指向誰,就把誰的地址賦給指針。 2、指針變量和他所指向的內存空間變量是不同的概念。 3、函數中的局部變量在棧區,函數運行完就被析構掉了,對應的內存區域也就沒有了。 4、C++編譯器的優化:會對語法、句法進行分

原创 字符串copy函數

字符串copy函數技術推演 #include "stdio.h" #include "stdlib.h" #include "string.h" //字符串copy函數技術推演 //字符串copy工作 //from形參,to形參的值

原创 向NULL地址COPY數據和不斷改變指針指向

#include"stdio.h" #include"stdlib.h" #include"string.h"   void main1() //報錯 { char *p1=NULL;//指針賦值爲NULL,即爲0 //p1=0x

原创 通過1級指針對變量間接賦值

#include"stdio.h" #include"stdlib.h" #include"string.h" //return只能返回一個結果 int getFileLen2() { inta = 100; returna; } i

原创 指針間接賦值的意義

1、函數調用時,形參傳給實參,用實參取地址,傳給形參,在被調用函數裏面用*p來改變實參,把運算結果傳出去。(指針作爲函數參數的精華) 2、C語言特有的現象,是C語言的精華 3、主函數和被調用函數之間通過內存交換運算結果。 函數參數–>