登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[学习笔记] 字符串

[复制链接]
发表于 2018-2-7 22:27:09 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C语言
学习安排: 字符串,还有static的作用
开始时间: 2018-02-07
结束时间:
char* s = "hello world!"是字符串吗?
之前我们有说过
int a[12]其实是一种 const 指针
int *a其实就可以当做一个数组来用
可是当我们尝试对s进行修改时
s[0]='b';
printf("%c",s[0]);
编译会通过,可是电脑不会输出printf内的字符

实际上
char* s="hello..."
s是一个指针,它指向的地址是一个字符串常量

如果我们遍历这个字符串
for(i=0;i<8;i++){
        printf("%c",s[i]);
    }
完全没问题
但是我们不能对它进行修改,因为指针所指向的是一个不能修改值的地址

char* s2 = "hello world!"
我们再定义一个指针 s2
如果我们试着输出两个指针的地址
    printf("%p\n",s);
    printf("%p",s2);
00403024
00403024
地址完全一样

字符串用指针表示还是数组显示?
如果要构造一个字符串-->数组
如果要处理一个字符串-->指针(处理参数,动态分配空间)

我们可以对一个字符串直接的使用printf和scanf
char str[20];
scanf("%s",str);
printf("%s",str);
这个数组有20个 char 大小
可是我们最多只能读取19个字符,最后一位留给计算机补上 '\0'
这样才能保证print正常的输出

char*a[]表示什么?
表示,有一个数组a
a[0]中是一个地址,a[1]中也是一个地址
每一个地址都指向一个 char 的变量,可能是字符,也可能是数字

int main()的参数类型是什么?
实际上
是这样表示的
int main(int argc,char *argv[])
当然在Windows系统中这种写法没什么意义,纯当补充个知识

static int i;//这个东西实在学单片机的时候看到的,就了解了一下
在C语言中,static关键字有三种用途:
1 用于全局变量定义时。
    全局变量定义时加上static修饰,表示该变量为静态全局变量。
    作用域为当前文件。
2 用于函数定义或声明。
    任意函数的定义或声明中包含了static修饰,
    表示该函数为静态函数,只能在本文件中被调用。
3 用于局部变量定义。
    局部变量定义时,带有static关键字,
    表示其为静态局部变量,只被初始化一次,
    之后每次调用函数时,该变量值为上次函数退出时的值。
    即,改变量的生存周期被扩展到整个程序运行时间段内。

今天单片机的内容是变量进阶与点阵,还有二维数组的使用
变量和数组,在之前C语言的帖子里面都有,点阵的使用和数码管相近,
都是动态显示,用定时器和定时器中断编写的,
但是我们的板子上面没有点阵,所以今天单片机的笔记没有多少

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表