您的位置:首页 > 运维架构 > Linux

苏嵌嵌入式linux实训 第 5 天

2020-07-14 06:33 281 查看

1.时间:编译时间、运行时间空间:内存空间时间换空间空间换时间
2.指针类型是根据储存的地址的类型(类型+步长)&运算符:取值运算符 &取地址
多维指针的作用:保存前一维的指针变量的地址
指针赋值<一定是相同指针类型赋值>及计算
万能指针:void:可以接受任何类型指针的值!(不能做取值和自加)
3.数组
Sacanf (“%d” , &a[i] ); printf( “ a [%d] =%d \n” , i , a[i] );
Sacanf (“%d” , a+i); printf( “ a [%d] =%d \n ”, i , *(a+i) );
一位数组名:指针常量,保存数组收元素的地址(所以不能a++:a是个常量)
也可以int *P=a;
Sacanf (“%d” ,p++ ) ;(p指的是数组的地址)
printf( “ a = %p \n”, i , a ); 二者输出的结果可能一样
但是第一个输出的是数组的首字节的地址,字节可能为4
printf( “ a = %p \n ”, i , &a ); 这个这是输出的是数组的地址,字节可能为4n(n代表的是数组的元素个数)
*(&a)=a;(取值和取地址互为逆运算)
结论:对一维数组的地址取值等于一维数组首元素的地址
二、作业
#include <stdio.h>
#include “stdio.h"void print1(char *ptr)
{
printf(”%s\n", ptr);
}
void print2(char (*ktr)[100])
{
for(int i = 0; i < 2; i++)
{
printf("%s\n", *(ktr + i));
}
void print3(char (*str)[2][100])
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
{
printf("%s\n", str[i][j]);
}
void print4(char **ytr
{
for(int i = 0; i < 3; i++)
{
printf("%s\n", *(ytr + i));
}
int main()
{
char ptr[100] = “hello”; char ktr[2][100] =
{“hello1”, “hello2”};
char str[2][2][100] = {{“hello3”, “hello4”},
{“hello5”, “hello6”}};
char *ytr[3] = {“hello7”, “hello8”, “hello9”}; print1(ptr);
print2(ktr);
print3(str);
print4(ytr);}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: