1. 程式人生 > >C++指標與字串

C++指標與字串

C語言裡沒有字串資料型別,要想獲得字串的表示形式利用字元陣列

#include<iostream>
using namespace std;
#include<stdlib.h>
void main()
{
	char ar[]={'a','b','c','d'};
	cout<<ar;   //字串後無結束符\0,會有多餘列印
	cout<<endl;
	
	char br[]={'a','b','c','d','\0'};
	cout<<br;
	cout<<endl;

	char cr[5]="abcd";   //字串結尾預設隱藏了\0
	cout<<cr;
	system("PAUSE");
}
C語言裡沒有字串資料型別,要想獲得字串的表示形式利用字元指標
#include<iostream>
using namespace std;
#include<stdlib.h>
void main()
{
	char *p="hello world";
	cout<<p;   
	//整形的指標,列印指標時只能列印其內部地址
	//字元指標,列印指標時也是地址,但是這個被看作字元指標後,會列印該指標指向地址記憶體放的字串,列印直到遇到\0為止
	system("PAUSE");
}

靜態常量區的字串儲存及指標訪問
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<string.h>
void main()
{
	char *p="hello world";   //hello world存放在記憶體的靜態常量區
	//指標變數p儲存的是該靜態常量區的首個字元地址
	//不能通過指標修改靜態常量區的字元,但是可以通過指標訪問

	int length=strlen(p);   
	//strlen計算的是字串p的有效長度,不算\0
	
	for(int i=0;i<length;++i)
	{
		cout<<p[i];
	}
	system("PAUSE");
}
字元陣列與被字串賦值的指標的區別:

字元陣列的儲存與指標所指字串的儲存形式不同

#include<iostream>
using namespace std;
#include<stdlib.h>
void main()
{
	char *p="hello world";   //hello world位於靜態常量區,字元指標儲存了字串首元素的地址

	char ar[]={'a','b','c','d','\0'};   //自己開闢的儲存字元陣列空間位於棧區,陣列對每個字元變數進行了儲存
	ar[0]='A';
}

指標可以通過指標名改變指向,但字元陣列不能通過陣列名改變指向


#include<iostream>
using namespace std;
#include<stdlib.h>
void main()
{
	char *p="hello world";   //指標p空間存hello world的首地址
	char *str="abcdef";   //指標str空間存abcdef的首地址
	p=str;   //將指標str的值(abcdef的首地址)賦值給指標p
	//指標p空間儲存了abcdef的首地址,從而改變了指標p的指向
	system("PAUSE");
}
指標初始化是把字串的首地址賦值給指標,但對字元陣列初始化是把每個字元存放到陣列空間
編譯時為字元陣列分配若干儲存單元,以存放各元素的值,但對字元指標變數,只分配一個儲存單元,用於字串首元素的存放地址

相關推薦

C++指標字串

C語言裡沒有字串資料型別,要想獲得字串的表示形式利用字元陣列 #include<iostream> using namespace std; #include<stdlib.h&g

嵌入式C語言--指標字串

使用指標這一工具來操作字串。 定義字串變數的初始化方法 char *strptr = "liefyuan"; char strarray1[] = "liefyuan"; char strarray2[8] = "liefyuan"; char strarray3[8] = {'

C++語言程式設計基礎》學習之陣列指標字串

陣列元素在記憶體中順次存放,它們的地址是連續的。元素間實體地址上的相鄰,對應著邏輯次序上的相鄰。 陣列名字是陣列首元素的記憶體地址,陣列名是常量,不能被賦值 陣列名是陣列的指標,指向首個元素的地址,多維陣列的n-1維是指標一維陣列初始化: 在定義陣列時給出陣列元素的初始值:列

指標字串知識整理 c語言

一、指標1. 輸出地址printf("%p",&i); //地址 printf("%x",&i); //十六進位制整數32bit下兩者相同,但是64bit就不同2. int* p,q;     //int *p, int q;  沒有int*這種型別,

C++初學初練數學指標字串之矩陣初練

#include <iostream> #include <string> #include <cmath> using namespace std; class Matrix { public: Matrix(int,int); ~

c指標 java引用

c 指標示例: #include <stdio.h> int test(int *p); int main(){ int a = 1; int *p = &a; test(p); printf("a = %d\n", a); r

c 指標連結串列 以及一閃而過的解決方法

來一個c程式碼  # include<stdio.h> void Gai(int *m)//此處的" *m "代表地址 { *m = 5;//此處的"*m"表示獲取指標指向地址指向的值 } int main(void) { int a = 1; Gai(&

C++數字字串的相互轉換

轉自https://blog.csdn.net/michaelhan3/article/details/75667066  首先推薦用用C++的stringstream。  主要原因是操作簡單。 數字轉字串,int float型別 同理 #include <st

指標9(指標字串

例題 應用字元指標,將字串“How are you!”從a陣列複製到b陣列。 #include<stdio.h> int main() {char a[]="How are you!",b[20]; char *s1,*s2; s1=a; s2=b; while(*s

C++ 指標引用

一:指標 1.1:指標詳解 變數的地址的概念: 記憶體是以位元組為單位進行編址的,記憶體中的每個位元組都對應一個地址,通過地址才能找到每個位元組。變數對應記憶體中的一段儲存空間,該段儲存空間佔用一定的位元組數,用這段儲存空間的第一個位元組的地址表示變數的地址。

C++時間字串轉換

                1、常用的時間儲存方式1)time_t型別,這本質上是一個長整數,表示從1970-01-01 00:00:00到目前計時時間的秒數,如果需要更精確一點的,可以使用timeval精確到毫秒。2)tm結構,這本質上是一個結構體,裡面包含了各時間欄位struct tm {      

指標字串指標函式

標題1、 指標與字串的千絲萬縷 由於在C語言中,是通過字元陣列來儲存字串的,因而前面通過指標對一維陣列和二維陣列的操作方法,同樣適用於字串。其實,對字串的操作最好採用字串操作函式。 #include<stdio.h> int main() { char name[12]

一級指標、二級指標字串

c語言中沒有字串型別,通過字元陣列來模擬字串,字串以‘\0’結束。 一、一級指標: 字元陣列的定義: 1.指定長度:char buf[100]={‘a’,‘b’}; 或char buf[100]=“ab”; 如果初始化的字元個數大於陣列長度,將會出現編譯錯

C++ 指標 陣列 字串

字串變數的定義和引用 標頭檔案#include<string> 字串會自動在末尾加上結束符‘/0’ 既可以用字串常量給字串變數賦值,也可以用一個字串變數給另一個字串變數賦值。 可以對字串變數中某一字元進行操作,string word=″Then″

C++ 整數字串相互轉化

一. 整數轉化為字串 方法1:用itoa(實戰時常用) #include <iostream> #include <stdlib.h> using namespace st

c字元字串

1、計算機只有0和1,沒有字元 2、我們看到的字元都是計算機圖形學繪製出來的 3、字串需要兩個要素:字串內容,字串長度,存放一個字串的記憶體大小>=字元的大小+一個位元組的結尾符號 4、字串的初始化:       (1)、常量字串,char* ptr = “Hello

C++數值字串相互轉換的那些事(一)字串轉數值(轉載請註明)

以前一門心思搞演算法,這個東西覺得自己寫個函式就能實現的事,但是到了公司後才發現同事寫的程式碼裡面,呼叫各種庫函式、window API、流來實現。什麼都不懂的我表示鴨梨很大,今天翻了翻資料瞭解了下各種方法的使用方法、區別以及適用範圍,寫成了這篇又長又臭又沒條理的東西。 注

c++ 數字字串的相互轉換

首先推薦用用C++的stringstream。 主要原因是操作簡單。 數字轉字串,int float型別 同理 #include <string> #include <sstream> int main(){ double

char陣列 、char指標字串常量的比較

陣列不是基本型別,不能直接參與比較,陣列與字串及字元指標與字串比較其實比較的是二者的地址。 例: int isequiv(char *t) { if (t == "char") return 1; else return 0; } int main() { char te

c#日期字串間的轉換

1.日期轉字串(轉載) 在程式設計中經常要用到將日期變數轉換為字串的情況,而且不同的時候希望轉換成不同格式的字串 下面是一些常用的轉換及轉換結果: (檢視格式說明) 以日期為例: 2009-09-06 10:56:13.383        private void Form