(2)C语言 基础2

一、函数

二、指针

1.指针是一个用来存储内存地址的变量。

int * p ;

定义了一个指针变量p,p中存储的是一个地址,改地址里必定会存储一个int类型的数据。

*号表示变量p是一个指针。*和指针变量p中间的空格可以没有。

2.把变量a的地址存到指针变量p中。

p=&a;

打印p变量存储的内容,也就是变量a的所在地址

#include <stdio.h>

int main()
{
    int a = 5;
    int p = &a;
    printf("%p
", p); //打印指针变量p里存的内容
    printf("%p
", &a);//打印变量a的地址
    printf("%x
", p);//小写16进制
    printf("%#X
", p);//以0X开头的大写16进制
    return 0;
}

 打印地址

 每个16进制对应4位,本图对应24位地址。

 3.指针通信

#include <stdio.h>
void change(int * i, int * j);

int main()
{
    int x = 5;
    int y = 6;
    change(&x, &y);//
    printf("x=%d,y=%d",x,y);

}
void change(int * i,int * j)//定义两个指针变量
{
    int temp;
    temp = *i;
    *i = *j;
    *j = temp;
}

三、数组

 1.初始化数组

如果超出数量范围,编译器会提示错误

2.获得总个数

    printf("%d
", sizeof(a)/sizeof(a[0]));//用总的字节数除以单个的字节数,得到初始化开辟的数量。
    printf("%d
", sizeof(b)/sizeof(b[0]));//无论有没有填满数组

 3.没有的位置补零.

    for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        printf("%d
", a[i]);
    }

 4.初始化器    C99新特性

#include <stdio.h>

int main()
{
    int a[8] = { 1,2,[4] = 8,9,[1]=3 };//初始化器,指定位置赋值,未初始化为0
    for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        printf("%d
", a[i]);
    }
    return 0;
}

 结果

 

 5.赋值

不能把一个数组赋值给另一个数组,

除初始化外,不能使用花括号,

注意数组下表越界问题,

原文地址:https://www.cnblogs.com/buchizaodian/p/10046606.html