對於語句 char a hello 的理解

2021-05-27 09:43:44 字數 627 閱讀 3565

對於語句  char *a="hello";

對於這個宣告方式,會造成的誤解是:宣告了乙個字元指標(它會指向乙個位置),將「字串」賦值給 指標表示式"*a"所指向的位址。但正解是:宣告了乙個字元指標後,並用字串常量的第乙個字元的位址賦值給指標變數a。

即正確順序是:1.分配記憶體給字元指標;2.分配記憶體給字串;3.將字串首位址賦值給字元指標; 

這裡有兩點需要考慮清楚的地方:*a只是指向乙個字元。舉例如下:

#include

#include

using namespace std;

int main()

{string str="hello";

char * p="hello";

couthello

hello

h若字串常量出現在在表示式中,代表的值為該字串常量的第乙個字元的位址。所以」hello」僅僅代表的是其首字母位址。

原宣告方式相當於以下宣告方式:

char *a; a="hello";/*這裡字串"hello"僅僅代表其第乙個字元的位址*/

mysql,SQL語句對於時間的查詢

今天 select from 表名 where to days 時間欄位名 to days now 昨天select from 表名 where to days now to days 時間欄位名 1 7天select from 表名 where date sub curdate interval ...

SQL語句對於約束的增加及修改

sql語句對於約束的增加及修改 使用sql 語句在初次建立資料表時,同時增加約束的方法非常簡單 create table 表名 列名 列的屬性 約束名 n 即可,可建立的約束包括 primary key foreign key null not null check default等例如 creat...

SQL語句對於約束的增加及修改

使用sql語句在初次建立資料表時,同時增加約束的方法非常簡單 create table 表名 列名 列的屬性 約束名 n 即可,可建立的約束包括primary key foreign key null not null check default等 例如create table student st...