
普通变量在栈空间内,地址由大到小存储
而数组,申请一块连续内存,从小到大
指针:
1、指针:等同于地址,数据类型*指针名;
*号:定义指针的时候,类型说明符(说明后面紧跟的变量是一个指针变量)
&号:
2、指针怎么定义,怎么初始化
3、指针怎么使用
4、指针如何引用数组
4.1:指针怎么指向数组
4.2:指针+1 指针-1指针-指针 指针+指针
4.3:如何通过指针的方式访问数组
4.4:在函数传参的时候,数组名会退化成指针
字符数组
字符数组怎是定义,怎么使用?
字符数组和字符串的区别?
数组名还表示数组首元素的地址
对于指针+1来说,表示加一个格子;指针-1,表示退一个格子。不允许*2或者%2。
在同一数组内,指针-指针代表两个指针中间有多少个格子,指针+指针没有意义
怎么访问数组内元素值
1、通过数组下标 a r r[7] 7[arr]
2、通过指针解引用去访问 *(p+7) *(7+arr)
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = arr;
printf("%dn",arr[0]);
printf("%dn",*p);
printf("%dn",p[1]);
printf("%dn",*(p+1));
printf("%d %dn",*p,*(p+5));
printf("%p %pn",&arr[0],&*(p+5));
printf("%dn",(p+5)-(p));
return 0;
}
1 1 2 2 1 6 0x16fdff470 0x16fdff484 5
身份z号识别
int ID_card()
{
char crr[20];
scanf("%s",&crr,20);
int arr[] = {7,9,10,6,8,4,2,1,6,3,7,9,10,5,8,4,2};
int temp = 0;
for(int i = 0; i<17; i++)
{
temp += (crr[i]-'0')*arr[i];
}
int flg = temp%11;
char drr[] = {'1','0','x','9','8','7','6','5','4','3','2','1'};
return crr[17] == drr[flg];
}
int main()
{
int tag = ID_card();
if(tag)
{
printf("okn");
}
else
{
printf("身份证号输入正确n");
}
ID_card();
return 0;
}
折半查找
int Binsearch(int arr[],int len,int key)
{
assert(arr!=NULL);//安全处理机制
if(NULL == arr)
{
return -1;
}
int low = 0;//左边指针
int high = len -1;//右边指针
int mid;//每次缩小一半,需要和key比较的中间值
while(low <= high)//当low和high之间范围内 至少有一个值,则继续比较
{
mid = (low + high)/2;//low + (high - low)/2//让mid指向现在的范围中间值
if(arr[mid] == key)
//如果mid指向的值就是key 则直接返回其下标
{
return mid;
}
else if(arr[mid]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)