關於直接複製**出錯原因的解釋:以下**都是經過我編譯通過的。如果出現問題,一可能是貼上複製時出現錯誤,二可能是與你的編譯器有衝突。
1.指標的定義
int i=2;
int *p=&i;//int *p;p=&i;
所以:當使用scanf函式的時候,就不需要&(取址運算子)
2. 指標與一維陣列的關係
和*是乙個作用的,定義陣列的兩個方法
int a;
int *p=a;//int *p=&a[0];
p作為位址和a[0]的位址是一樣的,所以a[i]=*(p++);p++=&a[i++];
3. 指標與二維陣列的關係
二維陣列的定義有點特殊,首先二維陣列必須要又有乙個確定的值。也就是說
int a=;//該定義是不合法的。
int a=,};//該定義是不合法的。
int a[2]= ;//該定義是不合法的。
int a[2][3]= ;//該定義是合法的。
int a[3]= ;//該定義是合法的。
所以在定義二維陣列作為函式引數的時候,必須要有乙個確定的值
void pri(int a[3],int m,int n); //該定義是可行的。
例項**:
#include "stdio.h"
void seedd(int a[3],int m,int n);
int main()
; seedd(s,2,3);
return 0;
}void seedd(int a[3],int m,int n)
} for(int m=0;m
4. 指標陣列與陣列指標
陣列指標:陣列中的元素指向某一資料型別的指標,也就是,通過該指標可以找到該陣列中的每個元素的位置。
記法:char*array[4]=
例項**:
#includevoid main()
; for (int i=0;i<4;i++)
printf("\n"); }
}//輸出結果:
//zhangsan
//lisi
//wanger
//mazi
type *p[number]=>p[number];
具體操作類似
指標陣列:指向具有某類元素的陣列,也就是說通過指標可以找到該陣列。
記法:char (*array)[4];
例項**:
#includevoid main()
; int (*a)[4];
a=s;
for (int i=0;i<4;i++)//與下面的相似,可以寫成函式,避免重複
int ss[4]=;
a=ss;
for (int j=0;j<4;j++)
}
改變後的**:
#includevoid p(int (*s)[4]);
void main()
; int (*a)[4];
a=s;
p(a);
int ss[4]=;
a=ss;
p(a);
}void p(int (*s)[4])
}
5. 指標函式與函式指標
指標函式中主要包括兩個方案:乙個是函式引數是指標,另乙個是函式返回乙個指標。
當函式的引數為指標時,由上面的情況可以知道,實際上是引數可以陣列的形式表達出來。
也就是說函式得引數為指標等價於函式的引數為陣列或者單一值。
例項**:
#include "stdio.h"
int seekmax(int *a,int b);//該引數為指標
int main()
; int b=seekmax(a,4);
printf("%d",b);
return 0;
}int seekmax(int a,int b)//該引數為陣列
; int b=*seekmax(a,4);
printf("%d",b);
return 0;
}int *seekmax(int *a,int b)//該引數為指標
void a()
void b()
void c()
void d()
格式:宣告:(*function)(para,para…) //指標函式
替換:function=will substitude//函式名替換即可
使用:(*function)(para,para…)//使用函式指標
6.字串的處理
c語言中字串的處理需要利用到字元陣列因為在c中沒有string 型別。字串的操作主要包括以下幾個方面
a.遍歷每個字元charat
#include "stdio.h"
char charat(char *str,int i);
int main()
char charat(char *str,int i)
b.計算字串的長度
#include "stdio.h"
int length(char *str);
int main()
int length(char *str)
return len;
}
c.求某個字元在字串的第一次出現的位置
#include "stdio.h"
int firstindexof(char *str,char ch);
int main()
int firstindexof(char *str,char ch)
return len;
}
d.求某個字元在字串的最後一次出現的位置
#include int lastindexof(char *str,char ch);
int main()
int lastindexof(char *str,char ch)
//利用str長度倒著迴圈
for (int j = i-1;j >=0;j--) }
printf("can`t find..\n");
return 0;
}
e.統計某個字元的個數
#include int countcharnumber(char *str,char ch);
int main()
int countcharnumber(char *str,char ch)
temp=*str++;
} return i;
}
f.比較兩個字串的大小
#include int comparestr(char *str1,char *str2);
int main()
int comparestr(char *str1,char *str2)
while(*str2++!=null)
if (i>j)
else if (i
限於篇幅原因,就總結到這裡啦。
下面的內容一部分是把字串的處理補充完。
包括:一、連線兩個字串concatstr(char *str1,char *str2)
二、刪除字串的某個字元removecharfrom(char* str,char ch);
三、從某個位置擷取字串substring(char *str,int i);
四、從某個字元開始擷取字串substring(cahr *str,char ch);
五、擷取固定長度的字串substring(char *str,int start,int end);
六、按照固定方式(空格,或者「_」等)分離單詞splitstr(cahr *str,char ch);
七、字串插入某個字元insertstr(char *str,int place,char ch);
等等。然後就是下文的主要內容:
a:指標與結構體
b:指標與檔案
c:鍊錶是實現
d:拓展與特別注意。
JDBC學習筆記 上篇
二 獲取連線connection 三 得到執行sql語句的物件statement 四 執行sql語句,並返回結果 五 處理結果集 查詢得到的resultset 總結記錄一下jdbc的學習筆記,mysql版本5.7,驅動版本5.1.47 1.註冊驅動的方式如下 drivermanager.regist...
學習筆記(上下界)
關於上下界網路流學習筆記 無源無匯可行流 首先對於無源無匯,也就是迴圈流,是沒有最大流之說的。對於每一條邊有乙個流量下界down,和流量上界up,那我們使得此邊流量為up down,但這樣因為每條邊減少的流量不一樣,所以會導致流量不守恆,解決方式 因為流入每個點的流量都被剪掉了乙個下界,所以從超級源...
CSS3學習筆記 上
1 css是什麼?css是cascadingstylesheets 級聯樣式表 的縮寫。2 css可以用來做什麼?css是一種樣式表語言,用於為html文件定義布局。例如,css涉及字型 顏色 邊距 高度 寬度 背景影象 高階定位等方面。3 css跟html的區別在 html用於結構化內容 css用...