C指针2

#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\n",name[i]); //数组未使用到的全部会以0方式输出

printf("字节:%d\t",name[i]);
printf("地址:%d\n",&name[i]);
}

puts("测试:---int----");

for(i=0;i<10;i++){
printf("%d\n",ko[i]); //数组未使用到的全部会以0方式输出

printf("字节:%d\t",ko[i]);
printf("地址:%d\n",&ko[i]);
puts("");
/*
* 数组名就是数组的地址,也是数组首元素的地址
* */
printf("name = %d\t&name = %d\n",name,&name);
char b = 10;
int c = 10;
/*
* 指针远算是根据类型建行实际地址值的远行
* */
printf("%d\t%d\t",&b,&b+1);
printf("%d\t%d\t",&c,&c+1);


//reset(name+3);//数组名就是首元素的地址
//reset(&name+3);//&数组名+3 相当于整个数组名中的地址都+3(就是加了30个字节)
printf("字节:%d\n",name[3]);

last_lisa();

}

}

void reset1(char *p){
printf("地址:%d\n",p);
*p = 0;

}

void last_lisa(){
//方法1:使用数组下标
name[6] = 'l';name[7] = 'i';
name[8] = 's';name[9] = 'a';
//字符串是\0为结束的,后面的内容是不会打印的
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]);

}


}

 

 

posted on 2018-04-08 11:36  黄志平  阅读(95)  评论(0)    收藏  举报

导航