#include <stdio.h>
#include <stdlib.h>
char name[10] = "lisa";//内容:'l' 'i' 's' 'a' 0 0 0 0 0 0
int ko[10] ;
//函数声明
void reset1(char *p);
void last_lisa();
int i;
int main(void){
/*
* 1.数组未赋值的内容默认为0
* 2.数组元素在存储空间是连续的,地址根据数据类型来逐渐递增
* */
for(i=0;i<10;i++){
printf("%d
",name[i]); //数组未使用到的全部会以0方式输出
printf("字节:%d ",name[i]);
printf("地址:%d
",&name[i]);
}
puts("测试:---int----");
for(i=0;i<10;i++){
printf("%d
",ko[i]); //数组未使用到的全部会以0方式输出
printf("字节:%d ",ko[i]);
printf("地址:%d
",&ko[i]);
puts("");
/*
* 数组名就是数组的地址,也是数组首元素的地址
* */
printf("name = %d &name = %d
",name,&name);
char b = 10;
int c = 10;
/*
* 指针远算是根据类型建行实际地址值的远行
* */
printf("%d %d ",&b,&b+1);
printf("%d %d ",&c,&c+1);
//reset(name+3);//数组名就是首元素的地址
//reset(&name+3);//&数组名+3 相当于整个数组名中的地址都+3(就是加了30个字节)
printf("字节:%d
",name[3]);
last_lisa();
}
}
void reset1(char *p){
printf("地址:%d
",p);
*p = 0;
}
void last_lisa(){
//方法1:使用数组下标
name[6] = 'l';name[7] = 'i';
name[8] = 's';name[9] = 'a';
//字符串是 为结束的,后面的内容是不会打印的
puts(name);
for(i=0;i<10;i++)
{
printf("%c",name[i]);
}
puts("");
//方法2:使用指针
*(name+6) = 'l'; *(name+7) = 'i';//*(数组名+第几位) = ‘要修改的内容’ 修改数组中的内容
*(name+8) = 's'; *(name+9) = 'a';
for(i=0;i<10;i++)
{
printf("%c",name[i]);
}
puts("");
//方法3:使用strcpy字符串复制
strcpy(name+6,"judy");//第一个字母放在指定位置,后面会紧跟着覆盖
for(i=0;i<10;i++)
{
printf("%c",name[i]);
}
}