数组名同时也是该数组首元素的地址: 比如 name=&name[0]
对于 字符串的输入,可以用数组来写
int main()
{
char name[40];
scanf("%s",name);
printf("%s",name);
}
#define SIZE 4 int main() { short datas[SIZE]; shortshort *pti; short index; double bills[SIZE]; doubledouble *ptf; pti=datas; ptf=bills; printf("%23s %10s","short","double\n"); for(index=0;index<SIZE;index++) printf("pointers+%d: %10p %10p \n", index, pti+index,ptf+index); return 0; }
前面已经讲过 short 2字节 double 8字节
3D25-05C35-3=22-C=2-12 = (16+2-12) = 6 (由于2-12不够减,所以向前借1 即16)D-5=(13-1-5) = 7(13-1是因为2-12不够而被借走了一位)3-0=3结果为:3762H
这里 dates+2=&dates[2]; 相同的地址
*(dates+2)==dates[2]; 相同的值
*dates+2 ; 这个自我理解一下,其实 对于数组而言,是不是指向数组的指针,其实数组名跟指针变量名,是等价的,所以这里可以用dates来代替 pti ,来代码验证一下: 看了网上的,数组名其实也是指针,但是还是有区别的,数组名是指针常量,pti ptf指针是 指针变量
从上图可以看出,int 地址 相差 4个字节 ,4*8 也就是 32位 。 12ff70-12ff6c= 4 ,那么指针是什么呢?
指针也就是存放的 是 地址 0x0012ff6c ;
#include<stdio.h> int main() { int i=5; int* pi; pi=&i; printf("%d\n",i); printf("%d\n",&i); printf("%d\n",pi); }
所以说 申明指针变量,这个变量的值也就是 存储变量i的内存地址,相当于门牌号码。
转载:
#include<stdio.h>
int main()
{
char i,*pi;
i=10;
pi=&i; //算初始化吧,应该
*pi=20;
printf("%d",i);
}运行结果: i=20
也就是说直接通过指针进行了操作。改变了变量i的值。