学点C语言(22):数据类型

1. 关于数组的首地址:

#include <stdio.h>int main(void){    char cs[2][3] = {                      {'A','B','C'},                      {'D','E','F'}                    };    char *p1,*p2,*p3,*p4;    p1 = p2 = p3 = p4 = NULL;    /* 下面四个指针都是指向了同一个地址 */    p1 = &cs[0][0]; /* 这个最好理解 */    p2 = &cs[0];    p3 = &cs;    p4 = cs;        /* 这个最方便   */    printf("%p\n%p\n%p\n%p\n", p1, p2, p3, p4);    /* 显示地址 */    printf("\n%c %c %c %c\n", *p1, *p2, *p3, *p4); /* 显示内容 */    getchar();    return 0;}

2. 数组其他元素的地址:

例子中,数组的元素在内存中应该是这样排列的:

[0][0] [0][1] [0][2] [1][0] [1][1] [1][2]

下面是通过指针的方式获取数组的第三个元素:

#include <stdio.h>

int main(void)
{
  int nums[2][3] = {
            {11,12,13},
            {21,22,23}
           };
  int *p1,*p2;
  p1 = p2 = NULL;

  p1 = &nums[0][2];

  p2 = nums;
  p2 = p2 + 2;
//  p2 = (int *)nums + 2; /* 或者用这一句替换上面两行 */

  printf("%d,%d\n",*p1,*p2);

  getchar();
  return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索指针
, 数组
, int
, printf
, javamelody+c3p0
, 地址
, 元素
c#3 0数据库
,以便于您获取更多的相关知识。

时间: 2024-09-27 12:21:24

学点C语言(22):数据类型的相关文章

学点C语言(29):数据类型

自定义的类型名一般要大写, 以提示这是自命名的类型. 1. 把 unsigned long 更名为 UINT: #include <stdio.h> int main(void) { typedef unsigned long UINT; UINT num = 1234567890; printf("%lu\n", num); getchar(); return 0; } 2. 给一个结构重命名: #include <stdio.h> int main(void

学点C语言(18):数据类型

1. printf 枚举可显示枚举的序号: #include <stdio.h> int main(void) { enum ABC{AAA,BBB,CCC}; enum ABC e1,e2,e3; e1 = AAA; e2 = BBB; e3 = CCC; printf("%d, %d, %d\n", e1, e2, e3); getchar(); return 0; } 2. 定义枚举时可同时定义变量: #include <stdio.h> int main

学点C语言(16):数据类型

曾经对float num=3.14f; 这样的赋值非常疑惑,其实现在也不明白. 既然说明了是float类型,又何必在3.14后面挂个f呢? 书上说: int num=100; 一个整数常量将默认为int类型(除非常数有后缀或超出了int的范围) double num=3.14; 一个浮点数常量将默认为double类型 并要求: long num=100L; long long num=100LL; unsigned long=100UL; unsigned long long num=100UL

学点C语言(14):数据类型

在C语言中, char类型永远都是一个字节, 双字节字符类型是wchar_t; 但它不是内置类型, 定义在 stddef.h. 给 wchar_t 类型的字符或字符数组(也就是字符串)赋值要冠以 L; 格式化输出(如 printf) wchar_t 类型的字符串, 要用 %S(而非 %s) 标识. #include <stdio.h> #include <stddef.h> int main(void) { wchar_t wc=L'A'; wchar_t ws[]=L"

学点C语言(12):数据类型

C语言数据类型: 基本类型.构造类型.指针类型.空类型. 基本类型又包括: 整型.字符.浮点(单精度.双精度).枚举. 构造类型又包括: 数组.结构体.公用体. 1. 显示整型(int)的最小.最大值: #include <stdio.h> #include <limits.h> int main(void) { int n1,n2; n1 = INT_MIN; n2 = INT_MAX; printf("%d .. %d", n1,n2); getchar()

学点C语言(28):数据类型

在结构中, 每个字段的数据类型是唯一的; 使用联合可以在一个字段中储存不同的数据类型. 不同的数据类型共享一块内存. 当然其内存大小应依着大的来. 联合中的数据, 非此即彼, 只有一个有效; 应该有说明在某个数据中此时有用的是什么类型. 除了共享内存以外, 联合与结构一样. 1. union 的大小是其中最大数据成员的大小: #include <stdio.h> int main(void) { union MyUnion { short n1; int n2; double n3; }; p

学点C语言(27):数据类型

所有基础的数据类型, 最大的也不过 10 个字节; 我们可以自定义的数据类型 -- "结构", 通过把若干类型组合在一起, 让一种类型可以大很多. 我们知道, 一个字节有八个 Bit 组成; 能否把一种类型缩小.缩小到 Bit 级? 结构中的 "位字段" 是以 Bit 为单位的, 这已经是计算机的最小单位, 大小是 char 类型的 1/8. 下面的例子中定义的位字段, 分别有 1-4 Bit 大小; 1 Bit 的字段只能放两个数(0.1), 4 Bit 的字段也

学点C语言(26):数据类型

1. 包含数组的结构: #include <stdio.h> int main(void) { struct Rec { int x[3]; int y; } r1; r1.x[0] = 11; r1.x[1] = 22; r1.x[2] = 33; r1.y = 99; printf("%d,%d,%d,%d",r1.x[0],r1.x[1],r1.x[2],r1.y); getchar(); return 0; } 2. 结构中的结构: #include <std

学点C语言(25):数据类型

1. 结构数组: #include <stdio.h> int main(void) { struct Rec {int x,y;}; struct Rec rs[10]; size_t i; for (i = 0; i < sizeof rs/sizeof rs[0]; i++) { rs[i].x = i; rs[i].y = i * 2; } for (i = 0; i < sizeof rs/sizeof rs[0]; i++) { printf("%d, %d\