結構體,數組和指針的一些基本知識


1結構體

1.只有結構體變量才分配地址,定義是不需要的。

2.用sizeof關鍵字求結構體長度時,返回的最大基本類型所占字節的整數倍。所以說結構體的大小一定是里面最大的整數倍數。

2指針

在了解指針前,先要理解地址和數據,你可以想象有很多盒子,每個盒子有對應的號碼,那個號碼叫做“地址”,而盒子里放的東西叫做“數據”。

1.指針是一種保存變量地址的變量。

2.用指針有個好處就是可以輕易共享內存數據,使得程序更加高效。

3.int *p和int **p的區別:int *p表示地址所對應的數據是一個int類型的值,int **p表示的就是p地址里面的數據其實還是一個int類型的指針地址,所以訪問

值的時候,前者是*p,后者是**p。

 

 

 前者就是給你一把鑰匙你就去找箱子,后者就是給你一把鑰匙你去找鑰匙再去找箱子。

4.p++和(*p)++,一個加地址,一個加數據。

這里提一嘴*p,p,&p的區別,*p很簡單就是指向地址的數據,p就是指向的地址,&p的話,你首先的了解其實p本身也是個變量,但是只是它是指針變量而

已,是變量你就有地址和數據這兩個信息,數據用來存它所指向的變量的地址,所以&p就是表示它的地址。

3數組

1.數組的名就是數組的地址,數組的一個元素的地址也是數組的地址,比如arr,和&arr[0].

2.多維數組的本質其實就是一維數組在定義一個數組,只是邏輯上把它看成多維而已,類似於隊列那兒看成環形隊列。

3.函數返回數組,可以用指針函數返回。(首先它是一個函數,只不過這個函數的返回值是一個地址值。函數返回值必須用同類型的指針變量來接受,也就是說,指針函數一定有"函數返回值)。

#include<stdio.h>
int *funtion()
{
    static int arr[3];//C不支持在函數外返回局部變量的地址,除非定義局部變量為 static 變量。
    for(int i=0;i<3;i++)
    {
        arr[i]=i+3;
    }
    return arr;
 } 
 int main()
 {
     int *p;
     p=funtion();
     for(int i=0;i<3;i++)
     {
         printf("%d",*(p+i));
     }
     return 0;
 }

 不對的請指出,謝謝觀看者。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM