总结了一些指针易出错的常见问题
Posted cnb_yangwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结了一些指针易出错的常见问题相关的知识,希望对你有一定的参考价值。
指针与字符串
NULL和NUL区别:前者用来表示特殊的指针((void*)0),而NUL是一个char(\\0),不可混用。
字符常量:单引号;字符串:双引号;
字符串的声明方式:字面量、字符数组、指针。
字符串字面量池:
字符串初始化
初始化char数组: char header[]="Media Player";
strcpy函数初始化数组
char header[13];
strcpy(header, "Meadia Player");
2.初始化char指针
char *header;初始化这个字符串的常见方法是使用malloc和strcpy函数分配内存并将字面量复制到字符串中。
char *header=(char*) malloc(strlen("Media Player")+1);
strcpy(header, "Meadia Player");
区别sizeof与strlen:
标准输入初始化字符串
标准字符串操作
#include<stdio.h>
#include<stdlib.h>
#include"string.h"
int main()
{
char* error="ERROR:";
char* errorMessage="NOT Enough memory";
char* buffer=(char*)malloc(strlen(error)+strlen(errorMessage)+1);
strcpy(buffer,error);
strcat(buffer, errorMessage);
printf("%s",error);
printf("%s\\n",errorMessage);
}
传递字符串
#include<stdio.h>
#include<stdlib.h>
#include"string.h"
size_t stringLength(char* string)
{
size_t length = 0;
while(*(string++))
{
length++;
}
return length;
}
int main()
{
char* error="ERROR: ";
char* errorMessage="NOT Enough memory";
char* buffer=(char*)malloc(strlen(error)+strlen(errorMessage)+1);
strcpy(buffer,error);
strcat(buffer, errorMessage);
printf("%s\\n",buffer);
printf("%s\\n",error);
printf("%s\\n",errorMessage);
printf("%d\\n",buffer);
printf("%d\\n",stringLength(buffer));
}
传递字符常量的指针
给应用程序传递参数
返回字符串
函数返回字符串时,它返回的实际是字符串的地址。重点是如何返回合法的地址,可以返回以下三种对象之一的引用:字符量/动态分配的内存/本地字符串变量。
函数指针与字符串
以上是关于总结了一些指针易出错的常见问题的主要内容,如果未能解决你的问题,请参考以下文章