1218C++草稿

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章