//指针与数组
/*
int main()
{
int num[3]={1,2,3};
int *ptr;
for(ptr=num;ptr<num+3;ptr++)
{
printf("*ptr=%d\n",*ptr); //数组值 1 2 3
printf("ptr=%d\n",ptr); //指针ptr ptr+1 ptr+2对应的地址
}
return 0;
}
*/
/*
void main(void)
{
char *array[]={"abc","123","language"}; //指针数组;每个元素都是指针;array[0]就是指向数组元素“abc”的指针
char **p; //定义了一个指向字符指针的指针p
int i;
for(i=0;i<3;i++)
{
p=array+i; // array+i等价于&array[i];也就是每个数组元素的地址;
cout<<"*p="<<*p<<endl;
printf("*p=%s\n",*p);
}
}*/
/*
//数组作为参数:求一个数组中最大值
int max(int array[],int i)
{
for(int j=0;j<i;j++)
{
if(array[j]>array[0])
array[0]=array[j];
}
printf("get max value=%d\n",array[0]);
return array[0];
}
//指针来获取数组元素进行大小比较
int max2(int *num,int i)
{
printf("a=%d\n",a);
int getmax;
for(int j=0;j<i;j++)
{
if(getmax<*(num+j))
getmax=*(num+j);
}
printf("getmax=%d\n",getmax);
return getmax;
}
void main(void)
{
int num[10]={11,3,56,23,78,1,45,480,99,12};
//int maxvalue=max(num,10); //数组作为参数
int maxvalue=max2(num,10); //指针作为参数
}
*/
/*
// int* const p=&a
p的指向地址不可以发生改变,内存单元的内容是可变的
// int const *p=&a
p的指向地址可以发生改变,内存单元的内容是不可变的*/
/*
#include<stdio.h>
int main(void)
{
int i=3,j=4;
int const *p=&i;
int* const p=&i;
*p=10;
p=&j;
return 0;
}
*/
/*
int main()
{
char a[]="hello world!",ch;//初始化字符串
int i,len,f=1;
scanf("%c",&ch);//输出查找字符
len=strlen(a);
for(i=0;i<len;i++)//依次遍历字符串,判断是否存在
if(a[i]==ch){//如果存在,输出位置
printf("%d\n",i);
f=0;
}
if(f) //不存在输出
printf("字符串中不存在该字符!\n");
return 0;
}*/
/*
void main(void)
{
char *str="ABCCBD"; //1.分配内存给字符指针;2.分配内存给字符串;3.将字符串首地址赋值给字符指针;
cout<<"str="<<str<<endl; //ABC
cout<<"*str="<<*str<<endl; //A
int num=0;
while(*str!='\0')
{
*str++;
if(*str=='C')
{
num++;
}
}
cout<<"num="<<num<<endl; //A
}*/
/*
void main(void)
{
char str1[10]="abc"; //栈
char str2[10]="abc";
cout<<"str1="<<str1<<endl; //abc
cout<<"str2="<<str2<<endl; //abc
cout<<"&str1="<<&str1<<endl; //高地址
cout<<"&str2="<<&str2<<endl; //低地址 所以str2的地址比str2的地址小3*4个字节
cout<<"*str1="<<*str1<<endl; //首字符a
cout<<"*str2="<<*str2<<endl; //首字符a
if(str1==str2) //这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。因为地址不同,自然str1也不等于str2
{
cout<<"str1==str2"<<endl; //
}
else
{
cout<<"str1 !=str2"<<endl; //
}
}*/