指標
1、定義與作用
指標是變數的一種,裡面是位址,通過位址找到要找的資料。
單元的位址就是指標的內容;
2、指標運算子
&是取位址的運算子,*是表示指標運算子
例: int *p1, a;
p1= &a;
*p1 = 3;
*:1.定義時表示的是指標變數。2.使用時表示取值。
例:利用指標運算實現strcpy
#include
#include
char *mystrcpy(char *dest, char *src) \\dest為目的,src為源
char*tmp = dest;
if(dest == null || src == null)
returnnull;
while ((*dest++= *src++) != 『\0』); \\表示式為0時退出迴圈
return tmp;
int main()
char*str;
char*ptr;
str= (char *)malloc(sizeof(char) * 20); \\在堆中申請,需要釋放記憶體
ptr= (char *)malloc(sizeof(char) * 20); \\為指標變數申請記憶體空間
printf(「pleaseinput:\n」);
scanf(「%s%s」,str, ptr);
mystrcoy(str,ptr);
printf(「%s\n」,str);
3、指標作函式引數
函式的引數是乙個指標,作用是將變數的位址傳送到另乙個函式中。
char* a(int *, int *)
區分:函式指標:即指向這個函式的指標,定義為「資料型別 (*func)(引數列表);」()的優先順序比*高,所以*func加括號,如」void (*func)(int *, int *);」
指標函式:即返回值是指標的函式,定義為」資料型別 *func(引數列表);」,如「char*func(int *, int *);「,即返回值為char *型。
指標與變數
注意:指標變數未賦值時,可以是任意值,是不能使用的,會造成意外錯誤。而指標變數給null值後,則是可以使用的,只是不指向具體的變數。
指標變數的使用步驟
1、 定義指標變數; char * p;
2、 給指標變數賦位址; p = (char *)malloc(sizeof(char)* 20);
3、 正常使用指標進行運算;
指標和陣列
指標陣列:每個元素都是指標
陣列的指標是指數組的起始位址,陣列元素的指標是陣列元素的位址。
int a[10]; //定義a為包含10個整型資料的陣列
int *p; //定義p為指向整型變數的指標
p = &a[0]; //把a[0]元素的位址賦給指標變數p。也就是說,p指向a陣列的第0號元素。
指向陣列的指標變數也可以帶下標。p[i]和*(p + i)等價
int a[5] = ;
int *p2 = (int*)((int)a + 1); \\
int *p3 = (int*)(a + 1); \\a陣列首元素的位址,a+1表示第二個元素。
陣列和字串
用字串指標指向乙個字串
main()
char*string = ;
printf(「%s\n」,string);
char *s = 「c language」; 則表示s是乙個指向字串的指標變數,」c language」為常量,不可修改。把字串的首位址賦予s
字元陣列和字串的區別
1、 字串指標變數本身是乙個變數,用於存放字串的首位址。而字串本身是存放在以該首位址為首的一塊連續的記憶體空間中並以』\0』作為串的結束。
字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。
2、 對字串指標方式 char *ps = 「c language」;
可以寫為:char *ps; ps = 「c language」;
而對陣列方式:char st = ;
不能寫為:
char st[20]; st =;
而只能對字元陣列的各元素逐個賦值。
指標與函式
int (*pf)(); //函式的返回值是整型
typedef unsigned char uchar; //宣告乙個新的資料型別
1、int *(*(*fp)(int))[10];
2、int*(*(*array[5]))())();
1:fp是乙個指標,指向乙個函式,函式有乙個int型別的形參,函式的返回值是乙個指標,指向乙個有10個元素的陣列,每個元素的型別都是int *
2:array是乙個陣列,有5個元素,每個元素的型別是乙個指標,指標指向乙個不帶引數的函式,返回值是乙個指標,指標指向乙個函式,函式的型別是int *。
課堂筆記 C語言基礎與提高1
c語言基礎與提高 基本資料型別的位元組 整型 int 4個位元組 單精度浮點型float 4個位元組 雙精度浮點型 double 8個位元組 字元型char 1個位元組 長整型 long 4個位元組 8個位元組 64位 短整型 short 2個位元組 sizeof 不是函式,是乙個運算子 例1 下面...
課堂筆記 C語言基礎與提高2
陣列 int a 10 表示定義了乙個整型陣列,陣列名為a,有10個元素。a 0 a 9 從低位址到高位址。一維陣列的初始化 int a 4 也可以給部分賦值,只要對其中乙個元素賦過值,其他未賦值的元素為0,如果都不賦值,則各元素的值為隨機值。a 和 a,a即是陣列名也是位址 a 與 a的值相同,意...
c語言課堂筆記3
一.陣列是一組具有相同型別的變數的集合。c語言中輸入下標都是從。例如,對上例應用陣列可以將10個成績值儲存在記憶體的乙個連續區域中,使用乙個統一的名字來標識這組相同型別的資料,這個名字稱為陣列名。構成陣列的每個資料項稱為陣列元素。c程式通過陣列下標實現對陣列元素的訪問。1.c語言中陣列的下標都是從零...