支付穿指针和字符数组分析

容易搞混

int main(int argc , char *argv[])
{
	 char* name = "Victor Hugo";
	 char str[10] = "aaa";

	printf("\n%d  %d\n" , sizeof(name) , sizeof(*name) );
	printf("%s\n" , typeid(name).name());
	printf("\n%d  %d\n" , sizeof(str) , sizeof(*str) );
	printf("%s\n" , typeid(str).name());
	return 0;
}

输出

4  1           name长度为4

Pc            name是字符指针

10  1       长度为10

A10_c    str是字符数组

时间: 2024-08-30 11:26:14

支付穿指针和字符数组分析的相关文章

字符指针与字符数组

学了挺久的c语言,c语言有意思的就有指针这一大块,另外就是字符串,字符指针与字符数组的区别对于初学者应该是比较难以区分的,讲讲自己的看法. 1.定义上的区别 字符数组具有固定的地址,且字符数组的名字不能更改或运算. 字符指针是一个变量,用来存储首字符的地址,且指向的字符串通常为一个常量. char str[] = "helloworld"; str[4] = 'X'; printf("%s",str); 输出结果:hellXworld char *str = &qu

深入理解《字符指针与字符数组真正的区别》

来自: http://blog.csdn.net/on_1y/article/details/13030439 (这篇介绍的非常到位和透彻!!!) char *p="hello"; char q[]="hello"; char *r = (char*)malloc(sizeof(char)*6); 我们知道,字符指针和字符数组,都可以用来存储和表达字符串. 但,它们的实现方式是不同的! 下面,从代码初始化的角度,来分别说明. (1)  char *p="h

字符指针和字符数组

2017年12月19日17:12:10字符指针和字符数组的整理 1.字符数组是由若干个元素组成,每个元素中存放的是一个字符,而字符指针变量中存放的是第一个字符的地址 2.char * a;a = "I love China";指针变量可以赋值,但是数组名不可以这样赋值. char a[12]; a[0]='I';合法的. a = "I love China";//不合法!!! 3.char *p = "I love China";//定义指针变量

C 字符串指针与字符数组的区别

用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1. [字符串指针变量]本身是一个变量,用于存放字符串的首地址. 而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. [字符数组]是由于若干个数组元素组成的,它可用来存放整个字符串. 2. 对字符串指针方式  char *ps="C Language"; 可以写为: char *ps;  ps="C Language"; 而对数组方式

字符指针,字符数组,双引号的字符串的区别与联系

作者 :  陈宗权 先说说双引号的字符串,比如"chenzongquan",它是由里面咱们看到的一系列字符以及一个尾随的'\0'字符组成,存储在内存的只读存储区中.只读存储区是在整个程序运行期间都保留着的.可见的,而且其中的数据原则上是保持不变的.所以对一个双引号表示的字符串,只要你知道它的具体地址,可以在程序的任何一个函数中再次使用. 说到只读,要引一下,在16位系统中没有进行内存访问保护,所以在程序运行时实际上也可以改变只读存储区中的数据,但是在32位系统中有内存访问保护,程序运行

关于指针 用字符数组,字符指针变量输入字符串 动态为字符型指针变量分配内存

#include <stdio.h> #include <iostream> #include<math.h> using namespace std; int main() { //声明字符型数组和指针变量 char str[10]; char *strip=str; //输入输出 cout<<"str="; cin>>str; //用字符数组输入字符串 cout<<"str="<<

关于字符指针和字符数组初始化的问题

int main() { char a[6]="hello"; char b[6]="hello"; char* c="hello"; char* d="hello"; //*(c+1)='!';出错 if(a==b) cout<<"1"<<endl; if(c==d) cout<<"2"<<endl; return 0; } 该题输出的是

字符串常量与 字符指针,字符数组

1. 字符串的定义(1) char buf[10] = "hello"; //定义了10个字节的数组,但只用了6个字节存放字符串(2) char *str = "hello"; //此处hello是字符串常量,存储在长常量区,把首地址传给指针变量 sts(3) char *s = "hello"; // 指针s 与 指针str的内容都是指向字符串常量“hello” 其值相等:(4) char buff[] = "hello";

字符串?字符数组?指针?傻傻分不清楚

首先我们来看一下下面这个程序,不妨先猜猜它会输出什么哟. #include<stdio.h> #include<string.h> int main(void) { int a[5] = {1,2,3,4,5}; int i = 1; char str1[] = "HelloWorld\n";//数组除了在被运算符sizeof操作的时候不是直接看作地址外,其余都是可以直接等同于这个数组首元素的地址的.即一个指向首元素的指针 char *str2 = "