01.C 基本数据类型 和指针.md

77 阅读2分钟

1.取地址和取值

#include <stdio.h>

int main() {
    int a = 100;
    int *intP = &a;
    printf("数据是:%d\n", a);
    printf("地址是:%p\n", &a);
    printf("数据是:%d\n", *(&a));
    printf("数据是:%d\n", *intP);
    printf("数据是:%d\n", *(*(&intP)));
    return 0;
}

输出:

数据是:100
地址是:000000000061FE1C
数据是:100
数据是:100
数据是:100

& 为由变量中取出地址符号,*为从地址值中取出这个地址中的数据符号。

int * intP = &a; int *intP 是一个指针变量。

int * 就是int 数据类型数据的内存地址,也叫指针变量。

double * 就是double 数据类型数据的内存地址,也是一种指针变量。

同时 intP 是指针变量的变量名,这个变量也有自己的内存地址,也是使用& intP进行获取。 例子中

 printf("数据是:%d\n", *intP);
 printf("数据是:%d\n", *(*(&intP)));

是一个输出结果。

需要区分一个概念

//声明一个存储 int 指针地址的变量
// 实际上 int* 是变量类型,intP 是变量 名,只是习惯上*intP 靠在一起
int *intP = &a;
//* 取出地址所在的值,并修改为200.这个样子,a 的值就变成200了
*intP=200

如下面的例子:

#include <stdio.h>

int main() {
    int a = 100;
    int *intP = &a;
    *intP = 200;
    printf("a=%d", a);
    return 0;
}

输出:

F:\dev\C\413\cmake-build-debug\413.exe
a=200
Process finished with exit code 0

C 语言的函数只能先声明在调用。 可以再调用之前声明,然后在最后的时候实现,这样也可以进行调用。 函数不允许重名。 字符串的使用:

#include <stdio.h>

int main(){
//  char *a = "ddd";
// "ddd"是放在了常量区。a 作为char 指针,指向了常量区地址(搜素四驱模式)
    char a[] = "ddd";
    printf("内容是:%s",a);
}