#include <stdio.h>
#include <stdlib.h>
int main(void){
int age[] = {1, 2, 3, 4};
int p = sizeof(age)/sizeof(age[0]);
//用数组的方式来访问
for(int i=0; i<p; ++i){
printf("%d ", age[i]);
}
printf("\n");
//打印数组地址 和第一个成员地址
printf("数组地址:0x%p 第一个元素地址:0x%p\n\n", age, &age[0]);//完全一样
//用指针访问元素
//访问第一个元素
int *p1 = age;
printf("第一个元素:%d\n\n", *p1);
//访问第二个元素 第二个元素地址
//++p1;
printf("第二个元素:%d 第二个元素地址:0x%p\n\n", *p1+1, p1+1);
for(int i=0; i<p; ++i){
printf("数组第%d个元素是%d 元素地址是:0x%p\n", i+1, *p1, p1);
p1++;
}
printf("--------------------------------\n");
char age1[]={1, 2, 3, 4};
char *ip = age1;
for(int i=1; i<=4; ++i){
printf("数组第%d个元素是:%d 元素地址是:0x%p\n", i, *ip, ip);
ip++;
}
//总结: ip++ 的概念是在 ip 当前地址的基础上 ,自增 ip 对应类型的大小 ip等于ip加1*(sizeof(类型))
system("pause");
return 0;
}
//让用户输入一个字符串,然后反向输出
//注意:不能改变原来的字符串! * 如: "12345" 逆转成 "54321" 输出 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char age[128];
int len;
char tem;
printf("输入逆转数字:");
scanf_s("%s", age,128); //防止输入数字过多
len = strlen(age);
//方法一 前后交换
for(int i=0; i<len/2; ++i){
tem = age[i];
age[i] = age[len-1-i];
age[len-1-i] = tem;
}
printf("逆转之后数字是:%s\n\n", age);
//方法二 数组
printf("输入逆转数字:");
scanf_s("%s", age,128); //防止输入数字过多
printf("逆转之后数字是:");
for(int i=0; i<len; i++){
printf("%c", age[len-1-i]);
}
printf("\n\n");
//方法三 指针
char *p = &age[len-1];
printf("输入逆转数字:");
scanf_s("%s", age,128); //防止输入数字过多
printf("逆转之后数字是:");
for(int i=0; i<len; i++){
printf("%c", *p--);
}
printf("\n");
system("pause");
return 0;
}