开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
#include <stdio.h>
main()
{
int a;
int *p = &a;
printf("请输入一个整数");
scanf("%d",&a);
printf("a = %d\n",a);
printf("请重新输入一个整数");
/此处不需要取地址符&,加上后就变为了指针P的地址,并不能对a的值改变/
scanf("%d",p);
printf("a = %d\n",a);
return 0;
}
char a[] = "modle";
int b[5] = {1,2,3,4,5};
float c[5] = {1.1,1.2,1.3,1.4,1.5};
double d[5] = {1.1,1.2,1.3,1.4,1.5};
/因为每个数组为一个变量所以数组要加取地址符/
/当使用地址名时则不需要加取地址符/
printf("不加取地址符%p\n",a);
printf("a[0] -> %p,a[1] ->%p,a[2] -> %p\n",&a[0],&a[1],&a[2]);
printf("b[0] -> %p,b[1] ->%p,b[2] -> %p\n",&b[0],&b[1],&b[2]);
printf("c[0] -> %p,c[1] ->%p,c[2] -> %p\n",&c[0],&c[1],&c[2]);
printf("d[0] -> %p,d[1] ->%p,d[2] -> %p\n",&d[0],&d[1],&d[2]);
/每个地址加每个数组变量所属的类型大小,如int加四个字节/
指针指向数组,将指针指向数组的数组名或者指向树组的首地址即可
其他数组通过指针可以进行调用使用;
Char a[];
Char *p;
P = a;
P =&a[0];
错误定义:
*pb = b;
通过对指针进行加减运算进行调用其他数组
P+1并不是简单地址加1而是指向下一个数组元素
由int pb就可以看出来,我们仅仅指向下一个数组并没有改变地址值,因为int每次地址改变四个字节。
char a[] = "modle";
int b[5] = {1,2,3,4,5};
char *p;
int *pb;
p = a;
pb = b;
printf("p = %c,(p+1) = %c, (p+2) = %c\n",p,(p+1),(p+2));
printf("pb = %d,(pb+1) = %d, (pb+2) = %d",pb,(pb+1),(pb+2));
定义为数组可以用指针下标调用,同样定义为数组也可以用指针调用
但数组和指针并不相同,仅有互通使用的用法。
例
没用到指针bp,直接以数组b进行指针调用输出。
Printf(“b = %d, (b+1) = %d,(b+2) = %d\n”,b,(b+1),(b+2));
插入char *str = “struggle work”;
Int i, length;
Length = strlen(str)/获取字符串长度/;
For (i = 0; i < length ; i++);
{
Printf(“%c”,str[i]);/用数组的形式调用指针的值/
}
Printf(“\n”);