C语言 指针的使用
来源:互联网 发布:iris网络嗅探器下载 编辑:程序博客网 时间:2024/05/16 05:16
//
// main.c
// 指针
//
// Created by on 12-12-10.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define COUNT 100
#define MAX(A,B) A>B?A:B
#define SUM(X,Y) (X+Y)
enum WeekDay
{
Monday =0,
Tuesday,
wednesday,
Thuesday,
Friday,
Saturday,
Sunday
}day1,day2;
//1、
void swap(int *p,int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
//2、
void swapStr(char *p,char *q)
{
char temp;
temp = *p;
*p = *q;
*q = temp;
}
//5、求字符串长度函数
int strLength(char str[],char *p)
{
p = str;
while (*p!='\0') {
p++;
}
return p-str;
}
//6、
void strCpy(char *p,char *q,int m)
{
p = p+m-1;
while (*p !='\0') {
*q++ = *p++;
}
}
int main(int argc, const char * argv[])
{
int array[COUNT];
printf("%d = ",SUM(3, 4)*4);
void *p; // 泛型
int a = 10;
p = &a;
printf("%d",*(int *)p);
char ch = 'a';
p = &ch;
printf("%c\n",*(char *)p);
for (int i = 0; i<3; i++) {
static int a=0;
int b = 0;
printf("a == %d b = %d\n",a++,b++);
}
// 常量 指针 和 指针常量 ************************************************
// 常量 指针
int const x = 10; //常变量
int f = 5;
int const * m = &f; //常量指针,指针指向的内容不可以改变,指针的指向可以改变
// *m = 12; // 错误 ,会报错 指针内容 不能 改变
m = &x; //指针指向的内容不能通过 该指针 来 改变 ,但是 指针的指向 可以改变
//指针常量
int * const q = &f; //指针常量指针的指向不能改变,但是指针的内容可以改变
*q = 2; //指针的内容 可以 改变
//q = &x; //错误指针指向 不能改变
enum WeekDay day3 = Monday;
typedef enum WeekDay newWeekDays;
newWeekDays day4 = Friday;
switch (day4) {
case Monday:
printf("星期四:");
break;
case Friday:
printf("星期五:");
break;
default:
break;
}
printf("%d,%d",day3,day4);
void printDay(enum WeekDay day1);
printDay(day1);
// insert code here...
//指针
// int i=10,j=3;
// int *p;
// p = &i;
// int * q =&j;
// printf("*p = %d *q=%d",*p,*q); //result :10 3
// int a=10;
// int *p;
// p=&a;
// printf("a=%d,p=%p,&a=%p,&p=%p,*p=%d,&*p=%p,*&a=%d,",a,p,&a,&p,*p,&*p,*&a);
//
//
// int i=10,j=3;
// void changeValue(int *x,int *y);
// changeValue(&i,&j);
//
// printf("i=%d j=%d",i,j);
//
// int x;
// int getValue(int *a,int b);
// int value = getValue(&x, 3);
// printf("value=%d,x=%d",value,x);
//
// int array[5]={3,4,5,7,8};
// int * p =array;
//
// for (int i=0; i<5; i++) {
// printf("array[%d] = %d\n",i,*(p++));
// }
//
// *(p+4) = *(p+2) + *(p+3);
// printf("array[4] = %d\n",*(p+4));
//
// char * q= "Hello";
// while (*q!='\0') {
// printf("%c",*q);
// q++;
// }
// // 字符 数组 从控制台 输入
// char a[30];
// scanf("%s",a);
// printf("%s",a);
/*
char * stre = malloc(sizeof(int)); //申请内存
printf("请输入字符串:\n");
scanf("%s",stre);
printf("%s\n",stre);
free(stre); // 释放 内存
stre = NULL; //置为空 防止 出现 野指针
char str1[3][10] = {
"iPhone",
"android",
"symban"
};
for (int i=0; i<3; i++) {
printf("str1[%d] = %s\n",i,str1[i]);
}
//指针数组
char * str[] = {"iPhone","android","symban"};
for (int i=0; i<3; i++) {
printf("str[%d] = %s = %s\n",i,str[i],*(str+i));
}
*/
/*
// 1、指定 3个整数,按由大到小的顺序输出。
int a,b,c;
printf("输入三个整数:\n");
scanf("%d%d%d",&a,&b,&c);
if (a<b) {
swap(&a , &b);
}if (a<c) {
swap(&a ,&c);
}if (b<c) {
swap(&b ,&c);
}
printf("%d,%d,%d",a,b,c); //result:输入三个整数:
//23 4 30
//30,23,4
*/
/*
//2、定义3个字符串,按由大到小的 顺序输出
char str1[20],str2[20],str3[20];
// char *point1,*point2,*point3;
// point1 = str1;
// point2 = str2;
// point3 = str3;
printf("输入三个字符串:\n");
scanf("%s,%s,%s",str1,str2,str3);
// gets(str1);
// gets(str2);
// gets(str3);
if (strcmp(str1, str2)<0) {
swapStr(str1 , str2);
}if (strcmp(str2, str3)<0) {
swapStr(str2 ,str3);
}if (strcmp(str1, str3)<0) {
swapStr(str1,str3);
}
printf("%s %s %s",str1,str2,str3);
*/
// 3、有 n个整数(可用数组表示)使前面个数顺序向后移 m 个位置,把移出的 m 个数放在最前面。写一个函数实现以上功能,主函数中输入n个整数,输出是 调整后的n个整数。
//4、有n个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3报数),凡是报到 3的人推出圈子,问最后 留下的是原来的第几号?
/*
//5、写一个函数,求一个字符串长度,在main函数中输入字符串,并输出其长度
char str[30];
char *p = str;
printf("输入一个字符串:\n");
//gets(str);
scanf("%s",str);
int length = strLength(str, p);
printf("字符串str:%s长度为:%d",str,length);
*/
/*
//6、有一字符串,包含 n个字符,写一个函数,将此字符串从 第 m(m<n)个字符开始的全部字符,复制到另一个 字符串
int m,n;
char *p,*q;
printf("请输入n的值:\n");
scanf("%d",&n);
p = malloc(sizeof(char) *(n+1));
// p = malloc(2);
scanf("%s",p);
printf("请输入m的值:\n");
scanf("%d",&m);
q = malloc(sizeof(char) *(n-m+2));
strCpy(p,q,m);
printf("q ==== %s\n",q);
puts(q);
free(p);
free(q);
//result:
// 请输入n 的值:
// 9
// sdlkfjsfsd
// 请输入m 的值:
// 4
// q ==== kfjsfsd
// kfjsfsd
*/
/*
//7、输入一行文字,找出其中 大写字母,小写字母,空格、数字及其他字符各有多少。
char str[100];
char *p;
//char a = ' ';
int daxie=0,xiaoxie=0,kongge=0,number=0,qita=0;
printf("输入字符串:\n");
// printf("%d",a);
// scanf("%s",str);
gets(str);
for (p= str; *p!='\0'; p++){
if (*p <='Z'&& *p >= 'A')
{
daxie ++;
}
else if (*p<='z' && *p>='a') {
xiaoxie++;
}
else if (*p<=57 && *p>=48) {
number++;
}
else if (*p == 32) {
kongge++;
}
else {
qita++;
}
printf("daxie = %d\nxiaoxie = %d\nkongge = %d\nnumber = %d\nqita = %d",daxie,xiaoxie,kongge,number,qita);
*/
//8、在主函数中指定 10个等长字符串,用另一个函数对他们排序。然后在主函数输出这 10 个已经排好 的字符串
//9、用指针数组 处理上一题目,字符串 不等长
return 0;
}
int maxValue(const int *a,const int *b){
if (*a>*b) {
return *a;
}
}
void printDay(enum WeekDay day1)
{
if (day1 == Monday) {
printf("星期一。");
}
}
//
//void changeValue(int *x,int *y){
//
// int temp;
// temp = *x;
// *x = *y;
// *y = temp;
//}
//int getValue(int *a,int b)
//{
//
// int num =5; // *a=num;
// num+=b;
// return num;
//
//}
//void changeValue2(int *x,int *y){
//
// int *temp;
// temp = x;
// x = y;
// y = temp;
//}
- C语言 指针的使用
- C语言--指针的使用
- C语言指针的使用
- C语言 指针的使用
- c语言指针的指针使用
- C语言的指针的使用
- c语言指针使用
- c语言指针使用的注意问题
- c语言中指针的使用场合
- c语言中指针的使用场合
- c语言中指针的使用【一】
- C语言中数组指针的使用
- golang指针的使用,类似C语言
- C语言多级指针的使用
- C语言的void*指针使用
- C语言函数指针的使用举例
- C语言函数指针的使用
- C语言函数指针的使用
- Singleton method
- ENVI中利用立体像对提取DEM
- QProcess 进程类—调用外部程序
- 安装libpng报的两大错误的解决方法
- IE浏览器兼容模式自动开启代码
- C语言 指针的使用
- Linux中查看CPU信息
- 总结咋没有具体应该怎么没有如何吸引客户、如何引导购买
- SSL 接收到一个超出最大准许长度的记录。(错误码: ssl_error_rx_record_too_long)
- ext带过滤功能的树
- 备用sql 语句
- Data Grid in Zend
- ruby字符串替换总结
- linux驱动学习之tasklet分析