普通变量在栈空间内,地址由大到小存储
而数组,申请一块连续内存,从小到大
指针:
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条)