//1、指標操作變數
int *p;//定義乙個整形指標 p代表的是位址,*p代表的是位址指向的值
int a=10;
p=&a;//將a的位址賦值給p指標
*pa=20;//通過指標改變變數a的值
a=20;//也可以通過變數改變*p的值
//2、指標運算元組
int i,b=30,a=;//0<= i int *p=a;//陣列名代表陣列的首位址
*(a+i)等價於a[i]等價於p[i]等價於*(p+i);//而*(a+i)錯誤
//3、指標操作字串
注釋:在下面字串部分
//4、const修飾指標
int * const pa=a;//宣告指標常量,pa的位址為常量,但可以*pa=20;
const
int * pi與int
const * pi一樣;//const修飾的都是*pi,但可以pi=&b;
int * const pi與int * const pi同理;
const
int * const pi=&b;//任何方式都不可改變
//注意:符號常量的位址不能通過任何方式賦值給指標變數,否則就可修改符號常量的值 如:int const s=10;int * ab=(int *)&s;const int * pi=&s;都是錯誤的
//4、指標函式呼叫【其實函式名就是指標】
void find2(char array, char search, char ** ppa);//如果要通過形參改變實參的值,需要使用指標
//函式指標變數的申明
void (*funp)(int);//也可寫成void (*funp)(int x);
funp=&myfun; //將myfun函式的位址賦給funp變數
funp=myfun; //將myfun函式的位址賦給funp變數
(*funp)(20); //這是通過函式指標變數funp來呼叫myfun函式
funp(20); //這是通過函式指 針變數來呼叫myfun函式的。
//總結:myfun 函式名是乙個函式指標常量,而funp是乙個函式數指標變數,這是它們的關係。
typedef
void (*funtype)(int );//這樣只是定義乙個函式指標型別
typedef
void (*funtype)(int ); //②. 定義乙個函式指標型別funtype,與①函 數型別一至
void callmyfun(funtype fp,int x);
注釋:(1)陣列名代表陣列的首位址,a=&a[0];(2)int a[100],在記憶體中占用100×4=400位元組空間;(3)a=&a[0]=&a.三者僅在數值上是相等的(4)陣列方括號中不可用變數來表示元素的個數,但是可以是符號常數或常量表示式。如:int n=5;int a[n];錯誤
(5)static表示是靜態儲存型別, c語言規定只有靜態儲存陣列和外部儲存陣列才可作初始化賦值。 如: static int a[10]=;
(6)當中值的個數少於元素個數時,只給前面部分元素賦值。而後面的元素自動賦0值
//1、基本型別的陣列
int a[10]; 說明整型陣列a,有10個元素。
float b[10]; 說明實型陣列b,有10個元素。
char ch[20]; 說明字元陣列ch,有20個元素。
static
int d=;
int s[5]=;
//2、指標變數在陣列中的應用
char c[10];
char *p=c; //將陣列首位址賦值給指標
*(p+n)==c[n];//指標的值等於陣列的值
p[i]=*(p+i)=a[i]=*(a+i);//指標訪問陣列
&p[i]=(p+i)=(a+i)=&a[0]+i;//獲取位址
//3、陣列存放字串
static
char c="basic/ndbase";//存放字串
注釋:c語言沒有單獨的字串型別,可通過陣列和指標存放
//1、陣列
char c="basic/ndbase";//存放字串,雙引號,可下標訪問
char a[10];
gets(a);//通過gets獲取字串到陣列,陣列元素為單個字元,可下標訪問
//2、指標
char *array;//僅宣告了乙個陣列僅分配1kb記憶體,未指向合法位址
scanf("%s",array);//錯誤的 array為野指標,未指向合法位址
char *pointer="123456";//指標指向字串存放的記憶體位址
printf("%s",pointer);//也可以pointer[i]
//1、定義
struct student //結構體型別的說明與定義分開。 宣告
typevarlist;//可跟型別變數列表
//2、定義型別變數
struct student stu1,stu2;//(1)定義型別變數標準方式
typevarlist;//(2)結構體末尾可加多個型別變數
struct{}type;//(3)不定義型別名直接定義變數
//3、結構體型別的初始化
struct student a=; //(1)定義的同時賦值
struct stutypevar=;//(2)直接在賦值
stu1.age=12;//(3)使用點語法
printf("年齡:%d \n", a.age);
//4、結構體指標
struct student stu1;
struct student *p;
p=&stu1;//這是必要的
(*p).age;//賦值1
p->***='男';//賦值2
//5、定義結構體陣列
struct student stu[3]=,,};//陣列裡包含3個結構體型別變數
//6、結構體的引用
(1)stu1.name//結構體變數.成員名
(2)(*p).age;//(*p).成員名
(3)p->***='男';//p->成員名
C 陣列 字串 指標之間聯絡詳解
1 定義 儲存多個同型別的值。int a 5 是int陣列,而不是陣列 5 整型常數 const值 變數 常量表示式 const int n 5 char a n cout a 2 初始化 定義陣列時,才能初始化。兩種方式 列表 對於字串可以不用 下標賦值 列表 int a 10 字元 char a...
指標和字串之間的聯絡
c語言中沒有string基本資料型別 c語言裡有這個標頭檔案,所以就想當然的認為c語言裡有string這個型別,通過下面這種形式來宣告string的變數string astring 編譯失敗。原來c語言裡壓根就沒有string這個型別,所以字串都是通過char陣列來儲存的,而這個標頭檔案裡宣告的函式...
指標和字串之間的聯絡
紅塵 網 wap.zuxs.net c語言中沒有string基本資料型別 c語言裡有這個標頭檔案,所以就想當然的認為c語言裡有string這個型別,通過下面這種形式來宣告string的變數string astring 編譯失敗。原來c語言裡壓根就沒有string這個型別,所以字串都是通過char陣列...