指针学习1

来源:互联网 发布:淘宝网怎么绑定信用卡 编辑:程序博客网 时间:2024/06/05 10:23

指针学习:
1、变量本质:内存中的存储单元
2、指针:变量的一个内存编号
3、指针变量:用于内存地址编号的变量(增加访问数据手段)
4、int i = 5;
int *p = &i;
——>p表示指针变量的名字
*表示p是一个指针变量,可以存储一个变量的地址
&便是取地址符,返回变量的地址编号

5、 printf(“%p\n”,p);——>用于查看指针指向的地址:0x7fff5fbff7d4
6、所有的指针变量在32位系统都只分配4字节内存,64位占8字节(不分类型,存储的是地址,地址没有类型)
7、指针变量基本特点:
1、值的一个地址;
2、值的可以改变的,即可以改变指向
3、指针本身有类型,基本数据类型(指向相同的数据类型);
int m = 10;int *p =&m;
4、多个指针可以指向同一个变量;
5、指针变量使用前必须指向一个地址;(否则是的野指针)
8、访问指针指向的变量:
1、通过指针间接访问指针变量指向的值;(*:解引运算符,获得/修改/设置指针指向地址里面的值)指针指向谁,解引用谁;
2、*p = *q; 读取*q指向的值,赋给*p
p = q; 将q指向的地址赋值给p,改变p的指向
9、声明的指针变量类型和指针所指向的变量类型应保持一致。
10、野指针:定义后未被初始化的指针,指向随机,不能做解引用操作 int *p;
⚠️任何指针在创建时是随机指向的一块空间,不会自动成为NULL指针,一定不能使用指向不明的指针,若暂时没有明确指向,则先指向NULL;p = NULL;
11、NULL:系统的一块特殊空间(0x0),没有权限读写,不能做解引用操作
12、野指针和空指针的区别:
野指针:值是一个随机数,不确定的值
空指针:指向为NULL,值为0x0,即0号地址单元(没有任何内容)
⚠️不要解引用野指针和空指针
13、指针作为函数参数
参数传递:
传递(单向):修改形参后,实参不改变(实参是在栈上临时创建的一个变量,用完后就释放了,是实参复制过来的,不会影响实参)
指针传递(双向):形参和实参指向同一块空间,形参修改后实参值也发生改变
14、字符数组结尾没有’\0’,字符串以’\0’结尾
15、char(/int /double) *p = “hello”—>属于一个常量指针,定义的时候必须初始化。

#include <stdio.h>void Strcpy(char *Dest,char *Src);int main(int argc, const char * argv[] ){    char str1[50],str2[50];    printf("请输入两个字符串:");    scanf("%s%s",str1,str2);    Strcpy(str1,str2);    printf("连结后的字符串为:%s\n",str1);    return 0;}void Strcpy(char *Dest,char *Src){    int i =0;    int j = 0;    while(Dest[i] != '\0')        i++;    while(Src[j] != '\0')    {        Dest[i++] = Src[j++];    }    Dest[i] = '\0'; //在连接后的字符串str2点结尾加上字符串结束的标志}

连接字符串

0 0
原创粉丝点击