2011年计算机等级考试二级C语言基础教程:数据类型、变量和运算符

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  (2) 字符型变量
  字符型变量可以用三种方法赋值。
  例如:
  main()
  {
  char a0, a1, a2; /*定义局部字符型变量a0, a1, a2*/
  a0='b'; /*将字母b赋给a0*/
  a1=50; /*将数字2(十进制ASCII值为50赋给a1*/
  a2='/x0d'; /*将回车符赋给a2*/
  .
  .
  .
  }
  (3) 指针型变量
  例如:
  main()
  {
  int *i;
  char *str;
  *i=100;
  str="Good";
  .
  .
  .
  }
  *i表示i是一个指向整型数的指针, 即*i是一个整型变量, i是一个指向该整型变量的地址。
  *str表示str是一个字符型指针, 即保留某个字符地址。在初始化时, str没有什么特殊的值, 而在执行str="Good"时, 编译器先在目标文件的某处保留一个空间存放"Good/0"的字符串, 然后把这个字符串的第一个字母"G"的地址赋给str, 其中字符串结尾符"/0"是编译程序自动加上的。
  对于指针变量的使用要特别注意。上例中两个指针在说明前没有初始化, 因此这两指针为随机地址, 在小存储模式下使用将会有破坏机器的危险。正确的使用办法如下:
  例如:
  main()
  {
  int *i;
  char *str;
  i=(int*)malloc(sizeof(int));
  i=420;
  str=(char*)malloc(20);
  str="Good, Answer!";
  .
  .
  .
  }
  上例中, 函数(int*)malloc(sizeof(int))表示分配连续的sizeof(int)=2个字节的整型数存储空间并返回其首地址。同样(char*)malloc(20)表示分配连续20 个字节的字符存储空间并返回首地址(有关该函数以后再详述)。由动态内存分配函数malloc()分配了内存空间后, 这部分内存将专供指针变量使用。
  如果要使i指向三个整型数, 则用下述方法。
  例如:
  #include
  main()
  {
  int *a;
  a=(int*)malloc(3*sizeof(int));
  *a=1234;
  *(a+1)=4567;
  *(a+2)=234;
  .
  .
  .
  }
  *i=1234表示把1234存放到i指向的地址中去, 但对于*(i+1)=4567, 如果认为将4567存放到i指向的下一个字节中就错了。Turbo C2.0中只要说明i为整型指针,
  则 (i+1) 等价于 i+1*sizeof(int)
  同样 (i+2) 等价于 i+2*sizeof(int)
  2. 数组变量的赋值
  (1) 整型数组和浮点数组的赋值
  例如:
  main()
  {
  int m[2][2];
  float n[3];
  m[0][0]=0, m[0][1]=17, m[1][0]=21;/*数组元素赋值*/
  n[0]=109.5, n[1]=-8.29, n[2]=0.7;
  .
  .
  .
  }
  (2)字符串数组的赋值
  例如:
  main()
  {
  char s[30];
  strcpy(s, "Good News!"); /*给数组赋字符串*/
  .
  .
  .
  }
  上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!/0" 的字符串。其中/0表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的长度多1。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答