3.28日学习内容小结

来源:互联网 发布:防火墙软件 编辑:程序博客网 时间:2024/05/18 12:04

从自学c语言开始也好几天了,感觉忘性还是有点大,我想写写小结吧,把东西回忆回忆。

就回忆下今天遇到的一些东西。

1.三目运算符
条件? A : B
?是三目运算符的关键字
2.下面先后定义了两个数组

  • 内存分配地址时按照定义先后顺序从大到小分配,在数组内部却是从小到大分配。
  • 数组的地址=》数组首元素的地址
  • 数组名 =》数组地址

`int num [2] ={1,2};

int num2[2] ={3,4};
`
这里写图片描述
3.数据类型

  • 基本数据类型
  • 构造类型
  • 字符串型
  • 指针

    4.占位符

  • int =>%d %i

  • float double=> %f
  • char =>%c
  • 字符串=>%s
  • long =>%l
  • long long => %lld
  • unsigned long =>%zd

5.一则错误
conflicting types for ‘x’ =>冲突的类型
今天如何解决:检查函数调用时是否声明

6.sizeof的返回值是unsigned long型。

7.不论定义了什么样的指针,都是八个字节,那为何还要规定指向类型?

因为!

举个例子:

int *p;char *p;

在赋值,或者提取的时候,编译器是这样操作的。从p所指向的地址开始,根据指向类型取出或者放入到(操作)多少个字节中去,int类型的就是操作到4个字节结束,char类型就是操作一个字节结束。

当你没有确定指针指向类型,或者错误的指向类型,就很可能操作到其他不该操作的内存。十分的危险!

8.数组元素的访问方式

  • 数组名[下标] eg:ages[i]
  • 指针变量名[下标] eg:p[i]
  • *(p+i)
#include <stdio.h>int main(int argc, const char * argv[]) {    int ages[4] ={10,9,8,7};    int *p;    p = &ages[0];//p=ages;    for(int i = 0;i < 4;i++)    {        printf("ages[%d]=%d\n",i,*(p+i));    }    return 0;}
  • 上面代码中p+i,指针加1,地址增加多少取决于指针指向类型,int型加4,char型加1.
  • 实际上,p+i也就是从p当前所保存的元素地址开始,第i个的地址。

例如此处p+2=>ages[2]

9.定义字符串的两种方式

  • 方式一:利用数组
  • char name[] =”hzl is cool”
  • 特点:字符串的内容可以修改
  • 场合:需要经常修改字符串内容的时候
  • 方式二:利用指针
  • char *name2 =”hzl is cool”
  • 特点:此时字符串其实是一个字符串常量,存放于常量区,字符串内容不能进行修改
  • 场合:字符串的内容不需要修改,字符串经常使用

    10:字符串的输入
    scanf(“%s”,name):将用户输入的字符串从name地址开始一个个存放,最后在末尾加上\0.
    eg:
    `

int main(int argc, const char * argv[]) {

int ages[4] ={10,9,8,7};int *p;p = &ages[0];//p=ages;for(int i = 0;i < 4;i++){    printf("ages[%d]=%d\n",i,*(p+i));}return 0;

}

`
ps:好奇怪。为啥加了头文件下面的代码都不见了。

0 0
原创粉丝点击