我愛學習網-上傳
當前位置: 主頁 > 文庫 > C語言 >

C語言 內存空間和指針變量

時間:2020-11-15 18:46來源:我愛學習網 作者:apple 點擊:

    變量名,和指針是放在棧中的(棧中放的是臨時變量)。但是這個指針里面的內容(比如說是一個字符串)是存放在堆中的,棧中存放的是臨時變量。

    char *a = getStringAddress(); //會把地址 賦給a指針變量。、

    棧區也叫臨時區


雖然把 內存單元里面的內容給擦除了,但是指向這個內存單元的變量是非空的。


 

    指針變量和 它所指向的內存空間變量是兩個不同的概念。釋放了指針變量所指向的內存空間,但是沒有它本身是沒有置成null的。

如果地址是 0x000000 以0打頭的地址是 不能賦予值的因為那是系統空間,0x000077 也是系統空間。

c也可以在棧上分配內存

 

注意下面這題,如果要去修改p1的值


 

 

間接賦值很重要

 

間接賦值可以構成很靈活的方法  


 

臨時區分配的內存是不能被 被被調用函數使用的,因為被調用函數運行結束后,臨時區的內存空間會被施放。

 

二級指針一般是在main中聲明一個指針變量,然后在調用方法中分配內存空間。

 

在c語言中沒有字符串這種類型,通過字符數組來模擬


 

void main(){
	//指定長度
  char buf1[99] = {"1","2","3"} //編譯通過,后面剩余的96個自動填充為0
  char buf1[2] = {"1","2","3"} //編譯不通過
  printf("buf1:%s",buf1);  //把數組的首字節傳進去會自動把這個字符串打印出來,即 "123"
  printf("buf[88]:%d\n",buf1[99]); // 0  ,即%s 并不會把0打印出來,但是你非要用%d顯示是可以的
 //不指定長度
 char buf2[] = {"1","2","3"}
  
}
void main2(){
 char buf3[] = "abcd" //buf3 作為字符數組應該是5個字節,,作為字符串應該是4個字節
 int len = strlen(buf3);
  printf("%d",len); //4  ,, strlen() 是函數
  int size = sizeof(buf3); //sizeof() 內存塊的大小
  printf("數組所占內存空間的大小:%d",size); //5  ,, sizeof()是標識符
  
  return 0;
}
void main3(){
	char buf3[] = "abcd" //buf3 作為字符數組應該是5個字節,,作為字符串應該是4個字節
	char * p = null;
  p = buf3;
  for(int i=0;i

 

【】 和 *p 的聯系。

buf[i] ===> buf(0+i) ===> *(buf+i)

 

buf = buf+1; // 和下面同理
//buf 是一個指針,是只讀的常量
buf = 0x11 //其實這個buf 一被定義的時候,他就是不可變的,你只能通過buf+i 來映射出他的位置,然后通過*來取值 

之所以buf不可以改變的原因是,如果改變了那就施放不了內存了,施放內存是根據他來的施放的。(在析構內存的時候,保證buf所指向的內存空間安全施放)

 

普通p指針和內存首地址的區別

字符串一級指針內存模型

1 buf和指針的區別 

注意strcpy()這個函數,“3333” 會先在堆中定義然后拷貝到p2  malloc到的空間里面去。(這部挺關鍵)


注意最后的b[i] 要加上'\0'


 

char *mytp = NULL;

*to++ = *from++;// 這里會報錯的因為null分配的地址空間是0x00000 這是系統的內存地址,不是給程序用的。

char *tmpfrom = from  <==> char *tmpfrom; tmpfrom = from; 

相當于給指針賦值,因為char *  相當于定義一個指針變量,char* tmpfrom = from 

 

這里的from是打印不出來的,因為from++ 了改變了指針指向了即已經不是首字節了。

 

注意這里的strstr(p,"abcd")模型和while的使用。(p=p+strlen("abcd))是關鍵

結果值,也以指針的形式傳進去。

間接賦值是指針存在的最大意義

------分隔線----------------------------
    ?分享到??
看看啦
主站蜘蛛池模板: 成人免费观看一区二区| 美女视频一区二区三区| 精品国产AⅤ一区二区三区4区| 国产一区二区三区高清在线观看| 亚洲色精品VR一区区三区 | 国产日韩精品一区二区三区在线| 日韩一区二区视频| 成人无码一区二区三区| 国产一区在线电影| 国产精品熟女视频一区二区| 日韩一区二区视频| 91精品一区二区三区在线观看| 熟妇人妻系列av无码一区二区| 又紧又大又爽精品一区二区| 精品无码人妻一区二区三区18| 亚洲一区在线视频| 激情亚洲一区国产精品| 无码毛片视频一区二区本码 | 久久精品无码一区二区三区| 无码人妻精品一区二区三区99不卡| 精品国产一区二区三区久| 亚洲日韩国产欧美一区二区三区 | 精品一区二区久久| 亚洲av综合av一区| 少妇激情AV一区二区三区| 无码人妻精品一区二区三区66 | 国产伦精品一区二区三区免.费| 香蕉久久ac一区二区三区| 香蕉久久ac一区二区三区| 精品在线视频一区| 一区在线免费观看| 中文字幕在线一区二区三区| 国模丽丽啪啪一区二区| 精品一区二区三区四区在线| 成人免费一区二区无码视频 | 日本一区二区三区四区视频| 日韩美一区二区三区| 一区二区三区四区在线视频| 国产一区在线电影| 国产综合无码一区二区三区| 亚洲av无码一区二区乱子伦as|