#include
#include
#include
//值传递
void swap(int m,int n)
{
int temp;
temp=m;
m=n;
n=temp;
printf("调用swap函数内结果:\n"); //在函数内部交换了a和b的值
printf("a=%d,nb=%d\n",m,n);
}
//值传递
void fun(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
printf("调用fun函数内结果:\n");
printf("a=%d,b=%d\n",*p1,*p2); //在这里其实只是交换了p1和p2的指向,本质还是值传递
}
//地址传递
void gun(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
printf("调用gun函数内结果:\n");
printf("a=%d,b=%d\n",*p1,*p2); //通过指针修改了指针指向的内容,也就是a,b的内容
}
//值返回
int hun()
{
int num=666;
printf("hun函数内num的值:%d\n",num);
return num; //返回num
}
//地址返回
int *ikun()
{
static int num=666;
printf("ikun函数内num的值:%d\n",num);
return # //返回&num
}
int main(int argc, const char *argv[])
{
int a=10;
int b=99;
printf("输入a=10,b=99\n");
putchar(10);
swap(a,b); //调用swap函数
printf("调用swap函数后的主函数中a,b的值:\n"); //由于传给函数的是值,所以调用函数之后a,b的值并不改变
printf("a=%d,b=%d\n",a,b);
putchar(10);
fun(&a,&b);
printf("调用fun函数后的主函数中a,b的值:\n");
printf("a=%d,b=%d\n",a,b);
putchar(10);
gun(&a,&b);
printf("调用gun函数后的主函数中a,b的值\n");
printf("a=%d,b=%d\n",a,b);
putchar(10);
//hun()=888; //尝试修改hun函数返回的值,会报错
int c=hun();
printf("主函数中hun函数返回的值:\n");
printf("num=%d\n",c);
putchar(10);
int *p=ikun();
*p=888; //尝试修改ikun函数返回的值
printf("主函数中ikun函数内返回的值:\n"); //修改成功,输出修改后num的值
printf("num=%d\n",*p);
return 0;
}
输出结果:
输入a=10,b=99
调用swap函数内结果:
a=99,nb=10
调用swap函数后的主函数中a,b的值:
a=10,b=99
调用fun函数内结果:
a=99,b=10
调用fun函数后的主函数中a,b的值:
a=10,b=99
调用gun函数内结果:
a=99,b=10
调用gun函数后的主函数中a,b的值
a=99,b=10
hun函数内num的值:666
主函数中hun函数返回的值:
num=666
ikun函数内num的值:666
主函数中ikun函数内返回的值:
num=888
#include
#include
#include
int main(int argc, const char *argv[])
{
int a; //未初始化的全局变量,在全局区的.bss段
int b=666; //已初始化的全局变量,在全局区的.data段
static int c; //未初始化的静态变量,在全局区的.bss段
static int d=999; //已初始化的静态变量,在全局区的.data段
char arr[25]="hello world"; //arr数组在全局区的.data段,而"hello world"在.ro段
char *p="hello"; //指针在全局区的.data段,而“hello”在.ro段
int main(int argc, const char *argv[])
{
double l=999.0; //局部变量在栈区申请
int m; //局部变量,在栈区申请,初始值为随机值
static int n; //静态局部变量,在全局区的.bss段申请
static int o=250; //静态局部变量,在全局区的.data段
char *q="nihao"; //q在栈区申请的8字节,但是"nihao"在全局区的.ro段
char str[100]="hello world"; //数组在栈区申请,"hello world"在全局区的.ro段
int *ptr=(int *)malloc(sizeof(int)); //ptr是在栈区,而申请的空间在堆区
return 0;
}
#include
#include
#include
int *fun(int n)
{
//连续申请n个int类型的大小
int *p=(int *)malloc(sizeof(int)*n); //向堆区申请空间
if(NULL==p)
{
printf("内存申请失败\n");
return NULL;
}
else
{
printf("内存申请成功\n");
return p;
}
}
void intput(int *p2,int m) //输入函数,从终端输入学生的成绩
{
for(int i=0;ip3[j+1])
{
temp=p3[j];
p3[j]=p3[j+1];
p3[j+1]=temp;
}
}
}
}
void sucu(int *p4,int k) //将排序完的成绩输出
{
printf("升序的成绩:");
for(int i=0;i
#include
#include
#define uint32 int
typedef int * Ptr_i,int32; //Ptr_i是int*类型的重命名
//int32是int类型的重命名
int main(int argc, const char *argv[])
{
uint32 b=100; //等价于int b=100
int32 num; //等价于int num
Ptr_i a; //等价于int *p=a;
printf("%d\n",b);
printf("%ld\n",sizeof(num));
printf("%ld\n",sizeof(a));
return 0;
}
#include
#include
#include
typedef unsigned short int uint16; //将无符号短整形重命名为uint16
typedef int * Ptr_i; //将int *类型重命名为Ptr_i
typedef char String[10]; //将char [5]类型重命名为String
int main(int argc, const char *argv[])
{
uint16 num=666; //等价于unsigned short int num = 520
printf("num占%ld个字节\n", sizeof(num)); //2
printf("num=%d\n", num); //520
Ptr_i p1=NULL; //此时p1是指针变量 int *p1;
printf("p1占%ld个字节\n", sizeof(p1)); //8
String s1; //此时是定义的长度为10的字符数组
strcpy(s1, "hello");
printf("s1=%s\n", s1); //hello
printf("s1占%ld个字节\n", sizeof(s1)); //10
printf("s1的长度为%ld\n", strlen(s1)); //5
return 0;
}
#include
#include
#include
struct Sanpin
{
char name[25]; //商品名称
char position[30]; //出产地
float price; //商品单价
double weight; //商品重量
};
int main(int argc, const char *argv[])
{
struct Sanpin gg;
printf("输入商品名称:\n");
scanf("%s",gg.name);
printf("输入商品出产地:\n");
scanf("%s",gg.position);
printf("输入单价:");
scanf("%f",&gg.price);
printf("输入重量:\n");
scanf("%lf",&gg.weight);
printf("输出:\n");
printf("%s\n",gg.name);
printf("%s\n",gg.position);
printf("%f\n",gg.price);
printf("%lf\n",gg.weight);
return 0;
}
输出:
./a/out
输入商品名称:
西瓜
输入商品出产地:
安徽
输入单价:5
输入重量:
5
输出:
西瓜
安徽
5.000000
5.000000
思维导图:
数据结构day1 - GitMind