指针
- 用一个变量保存一个内存地址,这变量叫指针变量
- 一个变量中保存的不是具体的数据,而是能找到这个数据的线索
- 指针变量,简称指针
- 格式:数据类型* 变量名
- & 是取地址
-
- int * 表示定义指针
- *p 表示取值
#include<stdio.h>
int main(){
int a = 10;
int* p1 = &a;
int* p2 = &a;
printf("a的地址是:%p\n", &a);
printf("a的地址是:%p\n", p1);
printf("a的值是:%d\n", *p1);
printf("p1的地址是:%p\n", &p1);
printf("p1的值是:%p\n", p1);
printf("p1指向的值是:%d\n", *p1);
*p1 = 20;
printf("a的值是:%d\n", a);
double b = 10;
double* p2 = &b;
return 0;
}
指针的作用
- 在函数内部修改外部变量的值
#include<stdio.h>
void swap(int *m,int *n)
{
int temp=*m;
*m=*n;
*n=temp;
}
int main(){
int a=10;
int b=20;
swap(&a,&b);
printf("a=%d\nb=%d",a,b);
return 0;
}
- 操作数组
用for循环打印字符串的元素
#include<stdio.h>
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int *p=arr;
printf("%d\n",*p);
for(int i=0;i<10;i++){
printf("%d ",*(p+i));
}
return 0;
}
字符串
#include<stdio.h>
int main(){
char str[]="abcd";
char str1[]={'a','b','c','d','\0'};
printf("%s\n",str);
printf("%s\n",str1);
str[0]='A';
printf("%s\n",str);
return 0;
}
- scanf输入字符串
注意不要超出范围,scanf遇到空格会停止读取
#include <stdio.h>
int main() {
char str[10];
printf("请输入字符串:");
scanf("%s", str);
printf("你输入的字符串是:%s\n", str);
return 0;
}
- fgets函数
可以读取包含空格的整行文本
#include <stdio.h>
int main() {
char str[100];
printf("请输入字符串:");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = 0;
printf("你输入的字符串是:%s\n", str);
return 0;
}
文本文件的写入
#include <stdio.h>
int main() {
FILE *fp;
fp = fopen("abc.txt", "w");
if (fp == NULL) {
printf("文件打开失败");
return 1;
}
fprintf(fp, "Hello, World!\n");
fprintf(fp,"你好世界");
fclose(fp);
return 0;
}