数组,指针,字符串一些基本了解
来源:互联网 发布:iti亲水性种植体 知乎 编辑:程序博客网 时间:2024/05/24 03:24
一、数组
1、数组:一组具有相同数据类型的数据的有序的集合
2、数组元素:构成数组的数据。数组中的每一个数组元素具有相同的名称,不同的下标,可以作为单个变量使用,所以也称为下标变量。
3、一维数组的定义
类型说明:指的是数据元素的类型,可以是基本数据类型,也可以是构造数据类型。类型说明确定了每个数据占用的内存字节数
4、初始化格式:数据类型 数组名[常量表达式]={初值表}
5、二维数组的定义:
数据类型 数组名[常量表达式][常量表达式]
二维数组可被看作是一种特殊的一维数组:它的元素又是一个一维数组
6、
数组的基本定义方法:
数组类型 数组名[常量表达式*]
* 不能是变量
* 必须有确定的值
数组类型:基本数据类型
数组的下标:从0开始----数组长度-1; 10 :0~9
7、 数组的初始化方法
1)直接赋值:int arr[10]={1,2,3,4...19}
={1,23,4} 没赋值部分是随机的
int arr[]={1,2,3}
字符数组定义:
char arr2[]={'h','e','l','l','o'}; //长度
arr2[]="hello";
arr2[1] = 'a';
2) 先定义,后赋值
int a[10];
a[0]=1,a[1]=2;.....a[9]=10;
8、 数组的访问方法:
数组名[下标] 进行数组访问
数组名[下标1][下标2]
对于多维数组进行初始化和访问,需要用的循环
二、字符串
字符串就是一串字符组成,在内存中连续存储
是使用char类型的数组进行存储,定义方法见数组定义
‘\0’和 0的区别
‘\0’是ASCII 码为0的字符 NUL 空操作 不能被显示出来
0 是ASCII 码为48的字符
字符串的输入\输出
字符串输入:
scanf("%s",字符数组名) 不能接受空格
scanf("%s%s%s...",字符数组名1,字符数组名2...) 可以以空格为分隔
分别保存到不同数组中
通过gets()实现接受键盘输入 ,格式:gets(字符数组名);
sscanf(源字符串,格式控制,变量) sscanf("127.0.0.1","%d.%d.%d.%d",&a,&b,&c,&d)
127 0 0 1
字符串的输出:
1)printf("%s",字符数组名);
2)puts(字符数组名); 全部输出字符数组的内容,遇到'\0'结束
字符串的函数:
1)求字符串的长度 :strlen 如:strlen(字符数组名)
2)memset(字符数组名,要替换的内容,要替换的个数)
根据要替换掉的个数,用要替换的内容,替换字符串数组的前 要替换的个数
memset(arr,'\0',10) arr数组的前10个元素用'\0'替换 等于清空
3)strcpy(字符数组名1,字符数组名2)
把字符数组名2拷贝到字符数组名1中 strcpy(arr1,arr2)
strcpy(arr1,"1234")
4)strncpy(目标数组,源数组,个数) 将指定个数的字符串拷贝指定的数组中
// 只复制”12345”的前两个字符给str字符串
strncpy( str, “12345”,2 ) ;
5)strcat(字符数组名1,字符数组名2)字符串的连接
将字符数组2 连接到字符数组1的后面,并且覆盖'\0'
三、头文件定义
定义头文件(xxx.h)的步骤:
1、定义源文件 xxx.c 任何一个头文件都对应一个源文件,并且头文件的名称和
源文件名称一致
源文件一般就是封装自定义的函数
2、头文件(xxx.h)
进行条件编译 (待续...)
1)函数的声明
2)宏定义
3)常变量声明
四、指针
指针的基本概念:
内存是怎么存数数据的?
内存被划分为若干个内存单元(1字节)
怎么利用这若干个内存单元呢?
给内存单元进行编号,好处方便查找,根据编号存储数据。
某个内存单元的编号,也可以称之为 地址。
指针就是地址
1)指向某一个变量的指针 : 指向某一个变量的首地址
////////////////////////////////////////////////////
什么是指针变量?
用于存放某一个地址的变量
指针变量如何定义?
指向的类型 *变量名 =NULL;如果不赋值初值,有可能导致无法预知的错误
= 0 ;
int *p=NULL; 或者 p=0;
取出指针变量存储的地址?
printf("%x",p);
取出指针变量指向的“值”(该指针变量指向的内存中存储的值)
printf("%d",*p);
指针变量如何赋值:
将某个变量的首地址赋值同类型的指针变量
int *p,i=3; 想达到 p-->i;
p = &i;
注意:一定要类型相同,某个类型的指针只能指向同类型的变量
指针赋值的时候,一定给一个地址,不能给数值(p=200错误)
空指针?
可以指向任何数据类型的变量
定义: void *指针变量名
使用: 要根据指向的变量的类型,进行强制类型转换
void *p1; float m=3.4;
p1 = &m; //p1指向的是float类型
获取p1指向的值: *((float *)p1)
指针的运算:指针只有减法运算?
两个指针进行减法运算:假设p1,p2两个指针
(p2-p1)/sizeof(指针指向类型)
比较?
- 数组,指针,字符串一些基本了解
- 关于数组指针,字符串指针的一些小细节
- 关于指针字符串和数组字符串的一些经验
- 数组的一些了解
- 关于数组指针,指针数组和字符串数组的一些问题
- 关于数组和指针的一些基本问题
- 关于递归调用,函数指针,数组,字符串的一些理解
- C 语言中指针、字符串与数组的一些关系
- 指针+函数+数组 深入了解
- 字符串,字符串数组,字符串指针!!
- 了解指针(3)-- 指针和数组
- 彻底了解指针数组,数组指针,以及函数指针
- C语言中 字符、数组、字符串、指针——学习IOS你必须了解
- 指针字符串和数组指针
- 字符串 指针 数组
- 字符串数组与指针
- 指针、数组、字符串
- 字符串数组与指针
- POJ 3280 Cheapest Palindrome【DP之经典回文问题】
- Windows界面编程第五篇 静态控件背景透明化
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Android rest接口
- 微型探测器,研究蛋白结构
- 数组,指针,字符串一些基本了解
- 第三周上机任务项目1-修旱冰场
- Windows界面编程第七篇 文件拖拽(文件拖放)
- 与邮件传输有关的几个协议
- jQuery----各版本
- 智能手机的发展有多猛?
- CC430F5137 IAR调试备忘
- Hdu 1411 校庆神秘建筑(欧拉四面体体积公式)
- Windows界面编程第八篇 listbox彩色显示隔行变色