C语言 指针与数组
指针与数组
一、 用指针指向数组
指针既可以指向整个数组也可以指向某个数组元素
int arr[3] = {1,3,5,2};
int *p1 = arr;
//这里的p1也就为&arr[0]
int *p2 = &arr[2];//这里指向了数组的第三个元素
int i = *p2;
//这里就是i = 5
/*
注意:*p1的值为多少? p1指向的为arr[0] 因此,*p1也就是1
*/
二、指针操作数组
指针可以访问数组的内存地址,所以数组也可以修改数组的元素值
1、修改数组元素
int arr[] = {1,2,5,3}; int *p = arr; *p = 10; printf("%d",arr[0]);
2、遍历数组
int arr[5] = {1,2,3,7,4};] int *p =arr; for(int i = 0; i < 5; i++) { printf("%-4d",*(p+i)); //通过*来取值 }
三、指针与字符串
char str[] ="hello"; char *p = str; printf("%s",p);
面试题目
去除字符串中的数字
char str[] = "0ABC12EE1";
char *p = str;
int i = 0;
while (*p) {
if (*p > '9' || *p < '0') {
str[i++] = *p;
}
p++;
}
str[i] = '\0';