王学岗c语言指针+指针地址

来源:互联网 发布:php钓鱼源码 编辑:程序博客网 时间:2024/06/05 21:59

(一):c语言程序入口(main函数)

//导入标准函数库(类似于Java导包)#include <stdio.h>#include <stdlib.h>void main(){    //输出函数    printf("hello world");    //这是一个命令(在window里面特有的)    system("pause");}

注意system首字母小写
看下运行效果
这里写图片描述
(二)基本数据类型

void main(){    int i = 28;    char c = 'g';    float f = 12.56;    double d = 99.99999;        long l = 1234566666;        short s = 40;        //控制台输出数据,需要使用占位符        printf("输出int类型的值:%d\n",i);        printf("输出char类型的值:%c\n", c);        printf("输出float类型的值:%f\n", f);        printf("输出double类型的值:%lf\n", d);        printf("输出long类型的值:%ld\n", l);        printf("输出short类型的值:%x\n", s);        system("pause");}

\n是换行符
看下运行效果
这里写图片描述
(三)c语言输入输出函数

void main(){    int i = 10;    //输出函数    printf("请输入一个整数:");    //输入函数    //控制台输入的值赋值给i    scanf_s("%d",&i);    //打印i的值    printf("赋值之后的i的值:%d",i);    system("pause");}

看下运行效果,输入2后回车
这里写图片描述
(四)c语言内存地址

void main(){    int i = 100;    //输出i的值    printf("i的地址%d\n",i);    //输出i的地址,i的地址每次运行都会重新分配内存,每次i的地址都不同    //&i:取出i变量的地址,占位符为%p(输出指针)    printf("i的地址%p\n",&i);    //根据地址获取值    //&表示取地址 *表示根据地址去值    printf("根据i的地址取出i的值%d\n", *(&i));    //补充:什么是变量名    //就是对内存的一点空间里的数据的抽象    system("pause");}

这里写图片描述

(5)c语言指针存储内容

void main(){    int i = 99;    //打印i的值    printf("打印i的值%d\n",i);    //打印i的地址    printf("打印i的地址%p\n",&i);    //定义一个指针变量    //int* 是一个int类型的指针变量,可以存储一个int类型的变量地址    int* p = &i;    printf("指针变量p的值%p\n",p);    getchar();

这里写图片描述
画了一张图,大家借鉴下
这里写图片描述

getchar():主函数调用结束之后,一个应用程序就算运行完毕,并退出,通常在它运行推出之前,为了给开发者看清楚它的调用运行结果,很多人都会刻意的在末尾添加getchar();目的就是为了在退出之前可以让调用者再输入一个字符,这时候系统的I/O就停留在读入之上,调用者就可以看清输出了。
(6)通过方法改变变量的值
看段代码

//形参void change(int a){    a = 23;}void main(){//实参    int i = 10;    printf("修改前的值:%d\n",i);    change(i);    printf("修改后的值:%d\n", i);    getchar();}

大家看下运行结果
这里写图片描述
形参和实参是两个不同的变量,也就意味着重新开辟了内存
我们打印输出下内存地址

void change(int a){    a = 23;    printf("形参a变量地址%p\n",&a);}void main(){    int i = 10;    printf("实参a变量地址%p\n", &i);    printf("修改前的值:%d\n",i);    change(i);    printf("修改后的值:%d\n", i);    getchar();}

看看运行结果
这里写图片描述

实参i和形参a的内存地址并不一样
所以以上的写法是错误的,我们可以通过指针去更改(指针类似于Java中的引用)

void change(int* a){    *a = 23;    printf("形参a变量地址%p\n",&a);}void main(){    int i = 10;    printf("实参a变量地址%p\n", &i);    printf("修改前的值:%d\n",i);    change(&i);    printf("修改后的值:%d\n", i);    getchar();}

这里写图片描述

看下Java里面的传值
这里写图片描述

0 0
原创粉丝点击