看下面两个申明:
char *str =“Hello World”;
char str1[] =“Hello World”;
字符数组和字符指针的区别:
1,字符数组和任何其他的数组一样,数组元素可以被修改,而字符指针保存的是字符串字面量,是一个常量,不能够被修改
2,申明为字符数组时,str1位数组名,而神明为字符指针时str位指针变量,可以被修改重新赋予值
3,如果需要可以修改变量的字符串,必须申明为字符数组,字符指针是不行的
//
// main.c
// TestArrayPoint
//
// Created by 千 on 16/7/18.
// Copyright © 2016年 kodulf. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
int array[] = {1,2,3,4,5};
//测试指针是否可以修改该数组上面的值,是可以的
int *point = array;
*point = 6;
printf("*point=%d\n",*point);
printf("array[0]=%d\n",array[0]);
//测试指针是否可以修改字符数组上面的值,是可以的
char charArray[]="hello";
printf("charArray[0]=%c\n",charArray[0]);
char *pointchar = charArray;
printf("*point=%c\n",*pointchar);
*pointchar = 'w';//注意了这里是*,不能少了,而且后面的w是字符而不是字符串
//charArray[0]='w';
printf("*point=%c\n",*pointchar);
printf("*charArray=%s\n",charArray);
//指针数组可以访问每一个元素,但是不可以修改,所以说如果要修改就使用字符数组
char *pointArray = "hello";//指针数组,可以访问里面的每个元素的,但是不可以修改的
printf("*charArray=%s\n",pointArray);
pointArray++;
//*pointArray='c';//是不可以修改的如果修改,会报错,Thread 1:EXC_BAD_ACCESS(code=2,address=0x1000000...)
printf("%c\n",*pointArray);
printf("*charArray=%s\n",pointArray);
return 0;
}