1218C++
課堂
指針是帶類型的地址
移動指針
兩種寫法
int c,*pc=&c;
int c,*pc;
pc=&c;
-那移動指針有什麼作用呢?
-保持疑問,繼續學下去就知道了
數組名是一個常量指針,數組名不能做加減運算;
int *ptr=myArray,
*ptr表示的是myArray的第一個元素,此時ptr和myArray等價,ptr[5]=myArray[5]
*myArray可行
*(myArray+1)可行(沒有因爲myArray常量而排斥他=>因爲這個常量攜帶了地址及數據類型)
&*&p vs. &&*p=>不同
&&*p是錯的,因爲&*p是一個地址值,不是變量,它就沒有地址
**&p呢?
指針數組每個元素都是指針,每個指針可以指向不同的東西??
char *week[4]={"Sunday","Monday","Tuesday","Wednesday"}
對字符數組的特殊支持:cout<<s<<endl;輸出的是從s[0]~s[最後一位]
cout<<week[0]<<endl;
min[1}=(*ap>*(ap+1))?(ap+1):min{1};
=>error C2143: syntax error : missing ';' before '{'
min[1]=(*ap>*(ap+1))?(ap+1):min[1];
=>':' : no conversion from 'int' to 'int *'
區別:
*ip+1,*(ip+1)前者是元素加1,後者是地址加1
待解決:
char *week[4]={"Sunday"/*雖然...*/,"Monday","Tuesday","Wednesday"};
cout<<*week[0]<<endl;
//"Sunday"對應的地址呢?
cout<<&week[0]<<endl;
/******
int myArray[5]={0},*ia=myArray,*iaa=&myArray;
cout<<ia<<endl<<*iaa<<endl;
*******/
調試:
調試和
Vc6.纔會有這個毛病
關了窗口之後還需要shift+f5,因爲沒有實際退出調試
不要在調試過程中修改代碼
改完之後按go雖然運行但不是重新運行,而是繼續運行??例如從for的第2個循環繼續往下
斷點:f9 可以設置在語句中=>在要斷點的地方另起一行
區別:一種會返回f(1),f(2)??
go直接跑到緞帶你的地方,直接跑到i=20的地方?
有可能是... 所以函數的首句一般要斷點
斷點+go f10 step over?
調試 1個小時的視頻?
調試突然斷開:數組越界或者指針出問題
二分查找法:背誦
cout>>下標+1
define的時候需要用()防止出錯 1970年元旦
疑惑
引不引入<time.h>使的srand(time(0))似乎沒有區別?
&&*p!=**&p
強制類型轉換要加括號,所以(float*)??
float *fp=(float*)ip 浮點指針類型,不是浮點類型 所以不能寫成(float)*ip
p1+n
=>p1+n*sizeof(int)=>指向往後第n個元素,即與指針運算時n的單位的是"數據單位",視p1指針類型而定
即以數據單位進行運算而不是以地址單位進行運算
報錯
#define SIZE
void creatArray(int [],int);
creatArray(s,SIZE);
=>error C2059: syntax error : ')'
=>SIZE沒有定義,雖然提示的是creatArray這裏()的錯誤
void creatArray(int s[],int size){
srand(time(0));
s[]={0};<--
for(int i=0;i<size;i++)
s[i]=RAND_NUM;
}
=>error C2059: syntax error : ']'
只有在聲明的時候可以初始化
void maint(){
=> unresolved external symbol _main
fatal error LNK1120: 1 unresolved externals
int compare(int s1[],s2[],int n)
=>syntax error : identifier 's2'
定義函數的時候s2前面忘了int
int myArray[5]={0},*ia=myArray,*iaa=&myArray;
=>
C:\Software\Microsoft Visual Studio\VC6\MyProjects\1218Class\1218Class.cpp(8) :
void mysum(int [],int,int,int[],int,int){
=>local function definitions are illegal
int a1[LENGTH+1]={0},a2=[LENGTH+1]={0},sum[LENGTH+1]={0};
=>syntax error : '['