C語言一看就懂的指針與結(jié)構(gòu)體介紹
指針
指針是C語言或者是c++里面最讓人頭疼的內(nèi)容之一,正所謂指針在手,可以任指天下,這里只是簡單的介紹指針的一些概念,后期我們將會深入剖析指針的基本原理。
注意:一個漢字占2個字節(jié)!
首先我們需要認(rèn)識一下內(nèi)存這個基本概念:
內(nèi)存是電腦上特別重要的存儲器,計算機(jī)中程序的運(yùn)行都是在內(nèi)存中進(jìn)行的,為了有效的使用內(nèi)存,就把內(nèi)存劃分成一個個小的內(nèi)存單元,每個內(nèi)存單元的大小是1個字節(jié),為了能夠有效的訪問到內(nèi)存中的每個單元,就把內(nèi)存單元進(jìn)行了編號,這些編號被稱為內(nèi)存單元的地址。
#include<stdio.h>
int main()
{
int num = 10;//num要在內(nèi)存中開辟空間
#// 取出num的地址,地址也稱為指針,注意這里num是一個整型變量,4個字節(jié),每個字節(jié)都有地址
//但是取出的是第一個字節(jié)的地址(較小的地址)
printf("%p\n\n", &num);//%p是以地址的形式進(jìn)行打印
int* p = #
*p = 20;//p是用來存放地址的,p是一個指針變量,先解引用在進(jìn)行賦值
printf("%d\n", *p);//對P指針進(jìn)行解引用,最終打印出變量的結(jié)果
return 0;
}
總而言之,第一次認(rèn)識指針,就應(yīng)該有這樣一個認(rèn)識,定義指針需要使用 *,然后使用 & 對其進(jìn)行去地址,將其存放到指針當(dāng)中,那么最后需要對其指針進(jìn)行解引用那么就需要再一次使用 *
變量是創(chuàng)建內(nèi)存中的(在內(nèi)存中分配空間的),每個內(nèi)存單元都有地址,所以變量也是有地址的。
指針大小在32位平臺占4個字節(jié),64位平臺占8個字節(jié)
注意編譯器上X86代表32位,X64代表64位


#include <stdio.h>
int main()
{
char ch = 'w';
char* pc = &ch;
*pc = 'q';
printf("%c\n", ch);
return 0;
}字符類型的指針
#include <stdio.h>
//指針變量的大小取決于地址的大小
//32位平臺下地址是32個bit位(即4個字節(jié))
//64位平臺下地址是64個bit位(即8個字節(jié))
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}這里只是對指針進(jìn)行一個簡單的了解,知道如何創(chuàng)建指針和對其進(jìn)行簡單的操作即可
結(jié)構(gòu)體
結(jié)構(gòu)體是C語言中特別重要的知識點(diǎn),結(jié)構(gòu)體使得C語言有能力描述復(fù)雜類型。
比如說:我們有一個表格需要進(jìn)行存儲,那么就會使用結(jié)構(gòu)體進(jìn)行存儲
比如描述學(xué)生,學(xué)生包含: 名字+年齡+性別+學(xué)號 這幾項信息。
這里只能使用結(jié)構(gòu)體來描述了。
struct Stu
{
char name[20];//名字
int age; //年齡
char sex[5]; //性別
char id[15]; //學(xué)號
};
#include <stdio.h>
int main()
{
// 打印結(jié)構(gòu)體信息
struct Stu s = { "張三", 20, "男", "20180101" };
//.為結(jié)構(gòu)成員訪問操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu* ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps -> id);
return 0;
}首先定義一個結(jié)構(gòu)體,然后對其結(jié)構(gòu)體分配信息,可以使用.操作符和->操作符進(jìn)行對其數(shù)據(jù)進(jìn)行讀取使用,那么在使用->的時候,需要對其結(jié)構(gòu)體實(shí)例進(jìn)行去地址,定義一個結(jié)構(gòu)體指針,這樣我們可以通過取地址的方法快速的獲取信息!

到此這篇關(guān)于C語言一看就懂的指針與結(jié)構(gòu)體介紹的文章就介紹到這了,更多相關(guān)C語言指針與結(jié)構(gòu)體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C語言實(shí)現(xiàn)本地socke通訊的方法
這篇文章主要介紹了?使用C語言實(shí)現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶端代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
C語言實(shí)現(xiàn)學(xué)生管理系統(tǒng)的源碼分享
這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07
C++11中隱式類型轉(zhuǎn)換的實(shí)現(xiàn)示例
C++類型轉(zhuǎn)換分為:隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換,本文主要介紹了C++11中隱式類型轉(zhuǎn)換的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-06-06
C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

