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 : '['