C語言一看就懂的指針與結(jié)構(gòu)體介紹
指針
指針是C語言或者是c++里面最讓人頭疼的內(nèi)容之一,正所謂指針在手,可以任指天下,這里只是簡單的介紹指針的一些概念,后期我們將會(huì)深入剖析指針的基本原理。
注意:一個(gè)漢字占2個(gè)字節(jié)!
首先我們需要認(rèn)識(shí)一下內(nèi)存這個(gè)基本概念:
內(nèi)存是電腦上特別重要的存儲(chǔ)器,計(jì)算機(jī)中程序的運(yùn)行都是在內(nèi)存中進(jìn)行的,為了有效的使用內(nèi)存,就把內(nèi)存劃分成一個(gè)個(gè)小的內(nèi)存單元,每個(gè)內(nèi)存單元的大小是1個(gè)字節(jié),為了能夠有效的訪問到內(nèi)存中的每個(gè)單元,就把內(nèi)存單元進(jìn)行了編號(hào),這些編號(hào)被稱為內(nèi)存單元的地址。
#include<stdio.h> int main() { int num = 10;//num要在內(nèi)存中開辟空間 #// 取出num的地址,地址也稱為指針,注意這里num是一個(gè)整型變量,4個(gè)字節(jié),每個(gè)字節(jié)都有地址 //但是取出的是第一個(gè)字節(jié)的地址(較小的地址) printf("%p\n\n", &num);//%p是以地址的形式進(jìn)行打印 int* p = # *p = 20;//p是用來存放地址的,p是一個(gè)指針變量,先解引用在進(jìn)行賦值 printf("%d\n", *p);//對(duì)P指針進(jìn)行解引用,最終打印出變量的結(jié)果 return 0; }
總而言之,第一次認(rèn)識(shí)指針,就應(yīng)該有這樣一個(gè)認(rèn)識(shí),定義指針需要使用 *,然后使用 & 對(duì)其進(jìn)行去地址,將其存放到指針當(dāng)中,那么最后需要對(duì)其指針進(jìn)行解引用那么就需要再一次使用 *
變量是創(chuàng)建內(nèi)存中的(在內(nèi)存中分配空間的),每個(gè)內(nèi)存單元都有地址,所以變量也是有地址的。
指針大小在32位平臺(tái)占4個(gè)字節(jié),64位平臺(tái)占8個(gè)字節(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位平臺(tái)下地址是32個(gè)bit位(即4個(gè)字節(jié)) //64位平臺(tái)下地址是64個(gè)bit位(即8個(gè)字節(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; }
這里只是對(duì)指針進(jìn)行一個(gè)簡單的了解,知道如何創(chuàng)建指針和對(duì)其進(jìn)行簡單的操作即可
結(jié)構(gòu)體
結(jié)構(gòu)體是C語言中特別重要的知識(shí)點(diǎn),結(jié)構(gòu)體使得C語言有能力描述復(fù)雜類型。
比如說:我們有一個(gè)表格需要進(jìn)行存儲(chǔ),那么就會(huì)使用結(jié)構(gòu)體進(jìn)行存儲(chǔ)
比如描述學(xué)生,學(xué)生包含: 名字+年齡+性別+學(xué)號(hào) 這幾項(xiàng)信息。
這里只能使用結(jié)構(gòu)體來描述了。
struct Stu { char name[20];//名字 int age; //年齡 char sex[5]; //性別 char id[15]; //學(xué)號(hào) }; #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; }
首先定義一個(gè)結(jié)構(gòu)體,然后對(duì)其結(jié)構(gòu)體分配信息,可以使用.操作符和->操作符進(jìn)行對(duì)其數(shù)據(jù)進(jìn)行讀取使用,那么在使用->的時(shí)候,需要對(duì)其結(jié)構(gòu)體實(shí)例進(jìn)行去地址,定義一個(gè)結(jié)構(gòu)體指針,這樣我們可以通過取地址的方法快速的獲取信息!
到此這篇關(guān)于C語言一看就懂的指針與結(jié)構(gòu)體介紹的文章就介紹到這了,更多相關(guān)C語言指針與結(jié)構(gòu)體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux下C語言的幾道經(jīng)典面試題小結(jié)(分享)
下面小編就為大家?guī)硪黄狶inux下C語言的幾道經(jīng)典面試題小結(jié)(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05C語言中l(wèi)seek()函數(shù)和fseek()函數(shù)的使用詳解
這篇文章主要介紹了C語言中l(wèi)seek()函數(shù)和fseek()函數(shù)的使用詳解,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08C語言采用文本方式和二進(jìn)制方式打開文件的區(qū)別分析
這篇文章主要介紹了C語言采用文本方式和二進(jìn)制方式打開文件的區(qū)別分析,有助于讀者更好的理解文本文件與二進(jìn)制文件的原理,需要的朋友可以參考下2014-07-07linux下C語言中的mkdir函數(shù)與rmdir函數(shù)
以下是對(duì)C語言中的mkdir函數(shù)與rmdir函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08